139 txs
1.72m calls
constructor
constructor(((uint256 value) marginRatio, (uint256 value) liquidationSpread, (uint256 value) earningsRate, (uint256 value) minBorrowedValue, uint256 accountMaxNumberOfMarketsWithBalances) riskParams, (uint64 marginRatioMax, uint64 liquidationSpreadMax, uint64 earningsRateMax, uint64 marginPremiumMax, uint64 spreadPremiumMax, uint128 minBorrowedValueMax) riskLimits)
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)
getAccountParNoMarketCheck
viewfunction getAccountParNoMarketCheck(tuple account, uint256 marketId) view returns (tuple)
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)
getEarningsRate
viewfunction getEarningsRate() view returns (tuple)
getIsAutoTraderSpecial
viewfunction getIsAutoTraderSpecial(address autoTrader) view returns (bool)
getIsGlobalOperator
viewfunction getIsGlobalOperator(address operator) view returns (bool)
getIsLocalOperator
viewfunction getIsLocalOperator(address owner, address operator) view returns (bool)
getLiquidationSpread
viewfunction getLiquidationSpread() view returns (tuple)
getLiquidationSpreadForPair
viewfunction getLiquidationSpreadForPair(uint256 heldMarketId, uint256 owedMarketId) view returns (tuple)
getMarginRatio
viewfunction getMarginRatio() view returns (tuple)
getMarket
viewfunction getMarket(uint256 marketId) view returns (tuple)
getMarketCachedIndex
viewfunction getMarketCachedIndex(uint256 marketId) view returns (tuple)
getMarketCurrentIndex
viewfunction getMarketCurrentIndex(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)
getMarketIsRecyclable
viewfunction getMarketIsRecyclable(uint256 marketId) view returns (bool)
getMarketMarginPremium
viewfunction getMarketMarginPremium(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)
getMarketTokenAddress
viewfunction getMarketTokenAddress(uint256 marketId) view returns (address)
getMarketTotalPar
viewfunction getMarketTotalPar(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)
getRecyclableMarkets
viewfunction getRecyclableMarkets(uint256 n) view returns (uint256[])
getRiskLimits
viewfunction getRiskLimits() view returns (tuple)
getRiskParams
viewfunction getRiskParams() 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 maxWei, bool isClosing, bool isRecyclable)
ownerRemoveMarkets
nonpayablefunction ownerRemoveMarkets(uint256[] marketIds, address salvager)
ownerSetAccountMaxNumberOfMarketsWithBalances
nonpayablefunction ownerSetAccountMaxNumberOfMarketsWithBalances(uint256 accountMaxNumberOfMarketsWithBalances)
ownerSetAutoTraderSpecial
nonpayablefunction ownerSetAutoTraderSpecial(address autoTrader, bool special)
ownerSetEarningsRate
nonpayablefunction ownerSetEarningsRate(tuple earningsRate)
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)
ownerSetMarginPremium
nonpayablefunction ownerSetMarginPremium(uint256 marketId, tuple marginPremium)
ownerSetMarginRatio
nonpayablefunction ownerSetMarginRatio(tuple ratio)
ownerSetMaxWei
nonpayablefunction ownerSetMaxWei(uint256 marketId, uint256 maxWei)
ownerSetMinBorrowedValue
nonpayablefunction ownerSetMinBorrowedValue(tuple minBorrowedValue)
ownerSetPriceOracle
nonpayablefunction ownerSetPriceOracle(uint256 marketId, address priceOracle)
ownerSetSpreadPremium
nonpayablefunction ownerSetSpreadPremium(uint256 marketId, tuple spreadPremium)
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
0x6080604052664765747465727360c81b6010553480156200001f57600080fd5b5060405162005e2c38038062005e2c833981016040819052620000429162000342565b6000620000576001600160e01b03620001a316565b600f80546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600f8054600160a01b60ff60a01b199091161790558151516008556020808301515160095560408084015151600a5560608085015151600b55608094850151600c558351600d80549486015193860151928601516001600160401b03199586166001600160401b0393841617600160401b600160801b03191668010000000000000000958416860217600160801b600160c01b031916600160801b94841694909402939093176001600160c01b0316600160c01b938316939093029290921790915593830151600e805460a09095015194909316941693909317600160401b600160c01b0319166001600160801b03909216909202179055620003f4565b3390565b600060208284031215620001ba57600080fd5b620001c6602062000382565b90506000620001d6848462000328565b82525092915050565b600060c08284031215620001f257600080fd5b620001fe60c062000382565b905060006200020e848462000335565b8252506020620002218484830162000335565b6020830152506040620002378482850162000335565b60408301525060606200024d8482850162000335565b6060830152506080620002638482850162000335565b60808301525060a0620002798482850162000315565b60a08301525092915050565b600060a082840312156200029857600080fd5b620002a460a062000382565b90506000620002b48484620001a7565b8252506020620002c784848301620001a7565b6020830152506040620002dd84828501620001a7565b6040830152506060620002f384828501620001a7565b6060830152506080620003098482850162000328565b60808301525092915050565b80516200032281620003c4565b92915050565b80516200032281620003de565b80516200032281620003e9565b60008061016083850312156200035757600080fd5b600062000365858562000285565b92505060a06200037885828601620001df565b9150509250929050565b6040518181016001600160401b0381118282101715620003a157600080fd5b604052919050565b6001600160801b031690565b90565b6001600160401b031690565b620003cf81620003a9565b8114620003db57600080fd5b50565b620003cf81620003b5565b620003cf81620003b8565b615a2880620004046000396000f3fe608060405234801561001057600080fd5b50600436106103d05760003560e01c80638da5cb5b116101ff578063d93c95911161011a578063ec6e3987116100ad578063f2fde38b1161007c578063f2fde38b146108bf578063f9416052146108d2578063fd04b606146108e5578063fd47eda6146108f8576103d0565b8063ec6e398714610873578063ef6957d014610886578063f1061ba814610899578063f2901ae2146108ac576103d0565b8063e5520228116100e9578063e552022814610823578063e8e72f751461082b578063eb1c6e6b1461083e578063eb44fdd314610853576103d0565b8063d93c9591146107ca578063deec053d146107dd578063e0e48d19146107f0578063e51bfcb414610803576103d0565b8063c0e044fc11610192578063cb04a34c11610161578063cb04a34c14610771578063d24c48bc14610791578063d36cca90146107a4578063d5ecf7c5146107b7576103d0565b8063c0e044fc1461072e578063c146094214610736578063c190c2ec1461073e578063c8e188261461075e576103d0565b806397bcdfb9116101ce57806397bcdfb9146106d2578063a67a6a45146106e5578063b548b892146106f8578063c0bb72b71461071b576103d0565b80638da5cb5b1461069c5780638f32d59b146106a45780638f6bc659146106ac5780638fae3be1146106bf576103d0565b80633063bce2116102ef5780635735a43011610282578063715018a611610251578063715018a6146106665780637e9eaf411461066e57806385b53fc8146106765780638928378e14610689576103d0565b80635735a430146106085780635ac7d17c1461061b578063697947951461062e5780636a8194e714610643576103d0565b80634be87414116102be5780634be87414146105ba5780634f3c1542146105cd5780634f4d66f6146105d557806356ea84b2146105e8576103d0565b80633063bce214610561578063387a498a146105745780633a031bf01461058757806347d1b53c1461059a576103d0565b8063124f914c116103675780631a7777bb116103365780631a7777bb14610513578063295c39a5146105335780632a5608451461053b5780632e822af31461054e576103d0565b8063124f914c1461049f57806313368364146104c057806317b50525146104e0578063197f0f0514610500576103d0565b80630781d820116103a35780630781d820146104535780630cd30a0e146104665780630f47fab014610479578063121fb72f1461048c576103d0565b80630339a0c4146103d5578063042069d6146103fe578063052f72d714610413578063062bd3e914610433575b600080fd5b6103e86103e3366004614923565b61090b565b6040516103f591906153cf565b60405180910390f35b61041161040c3660046149cd565b6109e0565b005b610426610421366004614697565b610adf565b6040516103f5919061542d565b610446610441366004614923565b610af7565b6040516103f5919061537e565b610411610461366004614923565b610b13565b6104116104743660046149fd565b610c06565b6103e86104873660046148b7565b610cb5565b61041161049a36600461499d565b610cc8565b6104b26104ad3660046148b7565b610d77565b6040516103f5929190615757565b6104d36104ce366004614923565b610d9b565b6040516103f5919061543b565b6104f36104ee3660046148b7565b610dd2565b6040516103f59190615773565b6104d361050e366004614923565b610de4565b610526610521366004614923565b610e1b565b6040516103f591906154b8565b6104f3610e52565b6104f36105493660046146b5565b610e58565b61041161055c366004614899565b610f74565b61041161056f366004614899565b611021565b610411610582366004614899565b6110ce565b6104266105953660046146b5565b61117b565b6105ad6105a83660046148d5565b611195565b6040516103f5919061551c565b6104116105c83660046149cd565b6111b8565b610526611267565b6104f36105e33660046148b7565b611283565b6105fb6105f6366004614923565b611295565b6040516103f591906154c6565b610426610616366004614923565b6112ca565b610426610629366004614923565b611304565b61063661132c565b6040516103f59190615538565b6106566106513660046148b7565b611390565b6040516103f594939291906153e0565b610411611547565b6105266115da565b61041161068436600461482e565b6115f6565b610526610697366004614923565b6116dd565b610446611712565b61042661172e565b6104f36106ba36600461495f565b61176e565b6104f36106cd366004614697565b61181f565b6104116106e036600461471f565b611853565b6104116106f33660046147cf565b61195b565b61070b610706366004614923565b6119e6565b6040516103f594939291906154e3565b610411610729366004614899565b611a42565b6104f3611aef565b610526611af5565b61075161074c3660046148d5565b611b11565b6040516103f59190615765565b6105ad61076c3660046148d5565b611b51565b61078461077f366004614923565b611b59565b6040516103f59190615749565b61052661079f3660046149fd565b611b7b565b6104116107b2366004614863565b611ba7565b6107516107c5366004614923565b611c56565b6107516107d8366004614923565b611c78565b6105fb6107eb366004614923565b611cbb565b6104f36107fe3660046148d5565b611cdd565b6108166108113660046148b7565b611cf0565b6040516103f59190615449565b610526611d02565b61041161083936600461499d565b611d1e565b610846611dcd565b6040516103f5919061552a565b610866610861366004614923565b611e6f565b6040516103f591906154d4565b6104116108813660046146ef565b611ff9565b61041161089436600461497e565b6120a8565b6104266108a7366004614697565b612157565b6104116108ba3660046146ef565b612169565b6104116108cd366004614697565b612218565b6104b26108e03660046148b7565b612248565b6105266108f3366004614923565b612263565b610526610906366004614923565b61229a565b6060600080905060608360405190808252806020026020018201604052801561093e578160200160208202803883390190505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60005260036020527fb1ee3b3d0d99532dd9f14b22c0b908d4eec0e052c3827bbed2d6c3986954d08c549091505b801580159061099c57508483105b156109d657808284806001019550815181106109b457fe5b602090810291909101810191909152600091825260039052604090205461098e565b509150505b919050565b6109e861172e565b610a0d5760405162461bcd60e51b8152600401610a0490615498565b60405180910390fd5b600f54600160a01b900460ff16610a365760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517f8854ab3e00000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc990638854ab3e90610a989060009086908690600401615713565b60006040518083038186803b158015610ab057600080fd5b505af4158015610ac4573d6000803e3d6000fd5b5050600f805460ff60a01b1916600160a01b17905550505050565b6000610af1818363ffffffff6122cf16565b92915050565b6000610b02826122fe565b610af160008363ffffffff61235f16565b610b1b61172e565b610b375760405162461bcd60e51b8152600401610a0490615498565b600f54600160a01b900460ff16610b605760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517f70b6151c00000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc9906370b6151c90610bc090600090859060040161569a565b60006040518083038186803b158015610bd857600080fd5b505af4158015610bec573d6000803e3d6000fd5b5050600f805460ff60a01b1916600160a01b179055505050565b610c0e61172e565b610c2a5760405162461bcd60e51b8152600401610a0490615498565b600f54600160a01b900460ff16610c535760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517f5eeabe3900000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc990635eeabe3990610a98906000908690869060040161573b565b6060610af160008363ffffffff61238b16565b610cd061172e565b610cec5760405162461bcd60e51b8152600401610a0490615498565b600f54600160a01b900460ff16610d155760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517faa92e34800000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc99063aa92e34890610a9890600090869086906004016156eb565b610d7f614075565b610d87614075565b610d928360006123d0565b91509150915091565b6000610da6826122fe565b5060009081526001602052604090206003015473ffffffffffffffffffffffffffffffffffffffff1690565b6000610af1818363ffffffff61247516565b6000610def826122fe565b5060009081526001602052604090206004015473ffffffffffffffffffffffffffffffffffffffff1690565b610e23614075565b610e2c826122fe565b506000908152600160209081526040918290208251918201909252600690910154815290565b60005490565b6000610e6261172e565b610e7e5760405162461bcd60e51b8152600401610a0490615498565b600f54600160a01b900460ff16610ea75760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517fdd32998a00000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc99063dd32998a90610f099060009087908790600401615546565b60206040518083038186803b158015610f2157600080fd5b505af4158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f599190810190614941565b9050600f805460ff60a01b1916600160a01b17905592915050565b610f7c61172e565b610f985760405162461bcd60e51b8152600401610a0490615498565b600f54600160a01b900460ff16610fc15760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517ff9cacc4c00000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc99063f9cacc4c90610bc090600090859060040161567f565b61102961172e565b6110455760405162461bcd60e51b8152600401610a0490615498565b600f54600160a01b900460ff1661106e5760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517f0f44e6bc00000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc990630f44e6bc90610bc090600090859060040161567f565b6110d661172e565b6110f25760405162461bcd60e51b8152600401610a0490615498565b600f54600160a01b900460ff1661111b5760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517f311401d000000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc99063311401d090610bc090600090859060040161567f565b600061118e81848463ffffffff6124bc16565b9392505050565b61119d614088565b6111a6826122fe565b61118e6000848463ffffffff6124f916565b6111c061172e565b6111dc5760405162461bcd60e51b8152600401610a0490615498565b600f54600160a01b900460ff166112055760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517f7335079b00000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc990637335079b90610a989060009086908690600401615713565b61126f614075565b506040805160208101909152600854815290565b6000610af1818363ffffffff61257816565b61129d61409f565b6112a6826122fe565b610af1826112bb60008263ffffffff6125ba16565b6000919063ffffffff61263e16565b60006112d5826122fe565b506000908152600160205260409020547501000000000000000000000000000000000000000000900460ff1690565b600061130f826122fe565b50600090815260016020526040902054600160a01b900460ff1690565b6113346140bf565b506040805160c08101825260085460a08201908152815281516020818101845260095482528083019190915282518082018452600a548152828401528251908101909252600b5482526060810191909152600c54608082015290565b6060808080806113a760008763ffffffff61238b16565b9050606081516040519080825280602002602001820160405280156113d6578160200160208202803883390190505b5090506060825160405190808252806020026020018201604052801561141657816020015b611403614088565b8152602001906001900390816113fb5790505b5090506060835160405190808252806020026020018201604052801561145657816020015b611443614088565b81526020019060019003908161143b5790505b50905060005b84518110156115375761148185828151811061147457fe5b6020026020010151610af7565b84828151811061148d57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506114e48a8683815181106114d757fe5b6020026020010151611195565b8382815181106114f057fe5b60200260200101819052506115188a86838151811061150b57fe5b6020026020010151611b11565b82828151811061152457fe5b602090810291909101015260010161145c565b5092989197509550909350915050565b61154f61172e565b61156b5760405162461bcd60e51b8152600401610a0490615498565b600f5460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6115e2614075565b506040805160208101909152600b54815290565b60005b81518110156116d957600082828151811061161057fe5b6020026020010151600001519050600083838151811061162c57fe5b60209081029190910181015181015133600081815260058452604080822073ffffffffffffffffffffffffffffffffffffffff8816835290945283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001683151517905591519092507f4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a6327906116c7908590859061538c565b60405180910390a250506001016115f9565b5050565b6116e5614075565b6116ee826122fe565b610af18261170360008263ffffffff61235f16565b6000919063ffffffff61269616565b600f5473ffffffffffffffffffffffffffffffffffffffff1690565b600f5460009073ffffffffffffffffffffffffffffffffffffffff166117526127c5565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600061177861172e565b6117945760405162461bcd60e51b8152600401610a0490615498565b600f54600160a01b900460ff166117bd5760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517fb25328e000000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc99063b25328e090610f0990600090879087906004016156b5565b600061182a826127c9565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b61185b61172e565b6118775760405162461bcd60e51b8152600401610a0490615498565b600f54600160a01b900460ff166118a05760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517f526ebb2700000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc99063526ebb279061190e906000908c908c908c908c908c908c908c908c90600401615596565b60006040518083038186803b15801561192657600080fd5b505af415801561193a573d6000803e3d6000fd5b5050600f805460ff60a01b1916600160a01b17905550505050505050505050565b600f54600160a01b900460ff166119845760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517fbd76ecfd000000000000000000000000000000000000000000000000000000008152737908b447ed2050043bb32daffab06739701245279063bd76ecfd90610a98906000908690869060040161561c565b6119ee614106565b6119f661409f565b6119fe614075565b611a06614075565b611a0f856122fe565b611a1885611e6f565b611a2186611295565b611a2a876116dd565b611a338861229a565b93509350935093509193509193565b611a4a61172e565b611a665760405162461bcd60e51b8152600401610a0490615498565b600f54600160a01b900460ff16611a8f5760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517f54dd351600000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc9906354dd351690610bc090600090859060040161567f565b600c5490565b611afd614075565b506040805160208101909152600954815290565b611b19614088565b611b22826122fe565b61118e611b376000858563ffffffff6124f916565b611b4c846112bb60008263ffffffff6125ba16565b612832565b6111a6614088565b611b61614088565b611b6a826122fe565b610af160008363ffffffff6128e316565b611b83614075565b611b8c836122fe565b611b95826122fe565b61118e6000848463ffffffff61294316565b611baf61172e565b611bcb5760405162461bcd60e51b8152600401610a0490615498565b600f54600160a01b900460ff16611bf45760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517fd963729100000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc99063d963729190610a989060009086908690600401615650565b611c5e614088565b611c67826122fe565b610af160008363ffffffff6129da16565b611c80614088565b611c89826122fe565b506000908152600160209081526040918290208251808401909352600781015460ff1615158352600801549082015290565b611cc361409f565b611ccc826122fe565b610af160008363ffffffff6125ba16565b600061118e81848463ffffffff612b3516565b6000610af1818363ffffffff612b8616565b611d0a614075565b506040805160208101909152600a54815290565b611d2661172e565b611d425760405162461bcd60e51b8152600401610a0490615498565b600f54600160a01b900460ff16611d6b5760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517f8c5dabd100000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc990638c5dabd190610a9890600090869086906004016156eb565b611dd5614177565b506040805160c081018252600d5467ffffffffffffffff808216835268010000000000000000808304821660208501527001000000000000000000000000000000008304821694840194909452780100000000000000000000000000000000000000000000000090910481166060830152600e549081166080830152919091046fffffffffffffffffffffffffffffffff1660a082015290565b611e77614106565b611e80826122fe565b50600090815260016020818152604092839020835161014081018552815473ffffffffffffffffffffffffffffffffffffffff8082168352600160a01b820460ff9081161515848701527501000000000000000000000000000000000000000000909204821615158388015286518088018852958401546fffffffffffffffffffffffffffffffff808216885270010000000000000000000000000000000090910416868601526060808401969096528651958601875260028401546bffffffffffffffffffffffff80821688526c01000000000000000000000000820416878701527801000000000000000000000000000000000000000000000000900463ffffffff168688015260808301959095526003830154851660a0830152600483015490941660c0820152845180840186526005830154815260e082015284518084018652600683015481526101008201528451808601909552600782015490931615158452600801549083015261012081019190915290565b61200161172e565b61201d5760405162461bcd60e51b8152600401610a0490615498565b600f54600160a01b900460ff166120465760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517f3c0c9ddc00000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc990633c0c9ddc90610a98906000908690869060040161556e565b6120b061172e565b6120cc5760405162461bcd60e51b8152600401610a0490615498565b600f54600160a01b900460ff166120f55760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517f10c87b0600000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc9906310c87b0690610a9890600090869086906004016156d0565b6000610af1818363ffffffff612bc516565b61217161172e565b61218d5760405162461bcd60e51b8152600401610a0490615498565b600f54600160a01b900460ff166121b65760405162461bcd60e51b8152600401610a04906154a8565b600f805460ff60a01b191690556040517fe80f802400000000000000000000000000000000000000000000000000000000815273b04ccb2d3850bf08eca8a9ff7db7d018fa17cfc99063e80f802490610a98906000908690869060040161556e565b61222061172e565b61223c5760405162461bcd60e51b8152600401610a0490615498565b61224581612bf4565b50565b612250614075565b612258614075565b610d928360016123d0565b61226b614075565b612274826122fe565b506000908152600160209081526040918290208251918201909252600590910154815290565b6122a2614075565b6122ab826122fe565b610af1826122c060008263ffffffff6125ba16565b6000919063ffffffff612cb516565b73ffffffffffffffffffffffffffffffffffffffff166000908152600691909101602052604090205460ff1690565b6000546122459082108015612336575060008281526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b6010547f496e76616c6964206d61726b6574000000000000000000000000000000000000612dc0565b6000908152600191909101602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b805173ffffffffffffffffffffffffffffffffffffffff1660009081526004830160209081526040808320828501518452909152902060609061118e90600101612e53565b6123d8614075565b6123e0614075565b60606123f360008663ffffffff61238b16565b90506123fd6141ac565b6124078251612eaf565b905060005b82518110156124435761243b83828151811061242457fe5b602002602001015183612f0e90919063ffffffff16565b60010161240c565b5061245560008263ffffffff612f7816565b612468600087838863ffffffff61317a16565b9350935050509250929050565b805173ffffffffffffffffffffffffffffffffffffffff16600090815260049290920160209081526040808420928201518452919052902054610100900463ffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600593909301602090815260408085209290931684525290205460ff1690565b612501614088565b50815173ffffffffffffffffffffffffffffffffffffffff1660009081526004840160209081526040808320828601518452825280832084845260030182529182902082518084019093525460ff8116151583526fffffffffffffffffffffffffffffffff61010090910416908201529392505050565b805173ffffffffffffffffffffffffffffffffffffffff1660009081526004830160209081526040808320828501518452909152812061118e906001016132f2565b6125c261409f565b506000908152600191909101602090815260409182902082516060810184526002909101546bffffffffffffffffffffffff80821683526c0100000000000000000000000082041692820192909252780100000000000000000000000000000000000000000000000090910463ffffffff169181019190915290565b61264661409f565b61264e614075565b61265f85858563ffffffff612cb516565b905061268d8382612676888863ffffffff6128e316565b6040805160208101909152600a8a015481526132f6565b95945050505050565b61269e614075565b600083815260018501602052604090206003015473ffffffffffffffffffffffffffffffffffffffff166126d0614075565b6040517f41976e0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906341976e099061272290879060040161537e565b60206040518083038186803b15801561273a57600080fd5b505afa15801561274e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127729190810190614905565b805190915061268d9015157f53746f72616765000000000000000000000000000000000000000000000000007f50726963652063616e6e6f74206265207a65726f00000000000000000000000088613460565b3390565b73ffffffffffffffffffffffffffffffffffffffff808216600081815260026020908152604080832054835260019091529020546010546122459391909116909114907f496e76616c696420746f6b656e00000000000000000000000000000000000000612dc0565b61283a614088565b602083015183516fffffffffffffffffffffffffffffffff90911690156128a65760408051808201909152600181526020848101519082019061289b9084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6134fe16565b815250915050610af1565b60408051808201909152600081528351602082019061289b9084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6134fe16565b6128eb614088565b506000818152600180840160209081526040928390208351808501909452909101546fffffffffffffffffffffffffffffffff8082168452700100000000000000000000000000000000909104169082015292915050565b61294b614075565b600984015460008481526001860160209081526040918290208251918201909252600690910154815261298890829061298390613592565b6135c9565b90506129c381612983876001016000878152602001908152602001600020600601604051806020016040529081600082015481525050613592565b604080516020810190915290815295945050505050565b6129e2614088565b6129ea61409f565b6129fa848463ffffffff6125ba16565b9050612a04614088565b612a14858563ffffffff6128e316565b90506000612a28868663ffffffff61235f16565b9050612a32614088565b6040805180820182526001815290517f70a08231000000000000000000000000000000000000000000000000000000008152602082019073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190612a9590309060040161537e565b60206040518083038186803b158015612aad57600080fd5b505afa158015612ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ae59190810190614941565b90529050612af1614088565b612af9614088565b612b0385876135e2565b9092509050612b2882612b1c858463ffffffff61368a16565b9063ffffffff61368a16565b9998505050505050505050565b815173ffffffffffffffffffffffffffffffffffffffff16600090815260048401602090815260408083208286015184529091528120612b7e906001018363ffffffff6136a416565b949350505050565b805173ffffffffffffffffffffffffffffffffffffffff1660009081526004929092016020908152604080842092820151845291905290205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff166000908152600791909101602052604090205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff8116612c275760405162461bcd60e51b8152600401610a0490615468565b600f5460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612cbd614075565b612cc5614088565b612cd5858563ffffffff6128e316565b9050612cdf614088565b612ce7614088565b612cf183866135e2565b91509150612cfd614075565b600087815260018901602052604090206004015473ffffffffffffffffffffffffffffffffffffffff1663e8177dcf612d3c8a8a63ffffffff61235f16565b846020015186602001516040518463ffffffff1660e01b8152600401612d64939291906153a7565b60206040518083038186803b158015612d7c57600080fd5b505afa158015612d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612db49190810190614905565b98975050505050505050565b82612e4e57612dce826136c8565b7f3a20000000000000000000000000000000000000000000000000000000000000612df8836136c8565b604051602001612e0a9392919061527c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262461bcd60e51b8252610a0491600401615457565b505050565b606081600001805480602002602001604051908101604052809291908181526020018280548015612ea357602002820191906000526020600020905b815481526020019060010190808311612e8f575b50505050509050919050565b612eb76141ac565b604080516000606082018181526080830190935290918291612eef565b612edc6141cd565b815260200190600190039081612ed45790505b508152602001612efe8461379c565b8152600060209091015292915050565b815151612f5d90157f43616368650000000000000000000000000000000000000000000000000000007f616c726561647920696e697469616c697a656400000000000000000000000000612dc0565b612f6b8260200151826137d6565b5060400180516001019052565b8060400151604051908082528060200260200182016040528015612fb657816020015b612fa36141cd565b815260200190600190039081612f9b5790505b5081526000805b82602001515181101561312057600083602001518281518110612fdc57fe5b602002602001015190505b8015613105576000612ff88261380c565b9050600061300684836139e3565b9050600061301a888363ffffffff61235f16565b9050613024614088565b613034898463ffffffff6128e316565b6040805160e08101825285815273ffffffffffffffffffffffffffffffffffffffff8516602080830191909152600087815260018e01825283902054600160a01b900460ff1615159282019290925282516fffffffffffffffffffffffffffffffff908116606083015291830151909116608082015290915060a081016130bb8b866125ba565b81526020016130d18b868663ffffffff61269616565b90528851805160018a01999081106130e557fe5b60200260200101819052506130fa85856139ee565b945050505050612fe7565b83604001518314156131175750613120565b50600101612fbd565b506040820151825151612e4e91808414917f53746f7261676500000000000000000000000000000000000000000000000000917f636163686520696e697469616c697a656420696d70726f7065726c7900000000916139f7565b613182614075565b61318a614075565b613192614075565b61319a614075565b60006131a587613ac2565b905060005b818110156132e3576131ba614088565b6131f28a6131ce8b8563ffffffff613ac716565b516131df8c8663ffffffff613ac716565b60a001518e92919063ffffffff613b4316565b90506131fd81613b98565b1561320857506132db565b600061323361321d8b8563ffffffff613ac716565b60c001515160208401519063ffffffff613ba016565b905061323d614075565b613245613bda565b905089156132905761328d60018e0160006132668e8863ffffffff613ac716565b51815260208082019290925260409081016000208151928301909152600501548152613592565b90505b8251156132b9576132b26132a48383613bfc565b88519063ffffffff613c1516565b87526132d7565b6132d46132c683836135c9565b87519063ffffffff613c1516565b86525b5050505b6001016131aa565b50919890975095505050505050565b5490565b6132fe61409f565b613306614088565b61330e614088565b61331885886135e2565b915091506000613326613c3a565b9050600061335e6133508a6040015163ffffffff168463ffffffff16613c4a90919063ffffffff16565b89519063ffffffff613ba016565b9050600061336b85613b98565b15613378575060006133aa565b61338282886135c9565b90508460200151846020015110156133aa576133a78185602001518760200151613c8c565b90505b818111156133b457fe5b60408051606081019091528a5181906133fd906133f8906bffffffffffffffffffffffff166133ec8188670de0b6b3a7640000613c8c565b9063ffffffff613c1516565b613ca2565b6bffffffffffffffffffffffff908116825260208d810151920191613434916133f891166133ec8187670de0b6b3a7640000613c8c565b6bffffffffffffffffffffffff1681526020018463ffffffff1681525095505050505050949350505050565b836134f85761346e836136c8565b7f3a20000000000000000000000000000000000000000000000000000000000000613498846136c8565b7f203c0000000000000000000000000000000000000000000000000000000000006134c285613d01565b604051612e0a9594939291907f3e00000000000000000000000000000000000000000000000000000000000000906020016152a4565b50505050565b600083158061350b575082155b156135225761351b600083613e10565b905061118e565b6000613534858563ffffffff613ba016565b905061268d61355f60016133ec6002613553888463ffffffff613c4a16565b9063ffffffff613e1016565b61356f838663ffffffff613e5216565b101561357c57600061357f565b60015b60ff166133ec838663ffffffff613e1016565b61359a614075565b6040805160208101909152825181906135c190670de0b6b3a764000063ffffffff613c1516565b905292915050565b600061118e838360000151670de0b6b3a7640000613c8c565b6135ea614088565b6135f2614088565b6135fa614088565b5060408051808201909152600181526020858101516fffffffffffffffffffffffffffffffff169082015261362d614088565b50604080518082019091526000815285516fffffffffffffffffffffffffffffffff16602082015261365d614088565b6136678387612832565b9050613671614088565b61367b8388612832565b91989197509095505050505050565b613692614088565b61118e8361369f84613e94565b613ebb565b60008260000182815481106136b557fe5b9060005260206000200154905092915050565b606080826040516020016136dc9190615267565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b80156137855781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811061374857fe5b01602001517fff00000000000000000000000000000000000000000000000000000000000000161561378057600101815290506109db565b61370f565b505060408051600081526020810190915292915050565b606060016101008304016040519080825280602002602001820160405280156137cf578160200160208202803883390190505b5092915050565b815161010082049060ff8316906001821b908590849081106137f457fe5b60200260200101818151179150818152505050505050565b600060ff6fffffffffffffffffffffffffffffffff83161561384f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8001613857565b608083901c92505b67ffffffffffffffff83161561388e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001613896565b604083901c92505b63ffffffff8316156138c9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016138d1565b602083901c92505b61ffff831615613902577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161390a565b601083901c92505b60ff83161561393a577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff801613942565b600883901c92505b600f831615613972577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0161397a565b600483901c92505b60038316156139aa577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016139b2565b600283901c92505b6001831615610af1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b610100919091020190565b6001901b900390565b84613abb57613a05846136c8565b7f3a20000000000000000000000000000000000000000000000000000000000000613a2f856136c8565b7f203c000000000000000000000000000000000000000000000000000000000000613a5986613d01565b7f2c20000000000000000000000000000000000000000000000000000000000000613a8387613d01565b604051612e0a97969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001615302565b5050505050565b515190565b613acf6141cd565b825151613b2590808410907f4361636865000000000000000000000000000000000000000000000000000000907f696e76616c696420696e646578000000000000000000000000000000000000009086906139f7565b8251805183908110613b3357fe5b6020026020010151905092915050565b613b4b614088565b613b53614088565b613b6486868663ffffffff6124f916565b9050613b6f81613f4d565b15613b8457613b7c613f67565b915050612b7e565b613b8e8184612832565b9695505050505050565b602001511590565b600082613baf57506000610af1565b82820282848281613bbc57fe5b041461118e5760405162461bcd60e51b8152600401610a0490615488565b613be2614075565b506040805160208101909152670de0b6b3a7640000815290565b600061118e83670de0b6b3a76400008460000151613c8c565b60008282018381101561118e5760405162461bcd60e51b8152600401610a0490615478565b6000613c4542613f87565b905090565b600061118e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613fde565b6000612b7e82613553868663ffffffff613ba016565b600081610af16bffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743936000000000000000000000084613460565b606081613d42575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526109db565b8160005b8115613d5a57600101600a82049150613d46565b6060816040519080825280601f01601f191660200182016040528015613d87576020820181803883390190505b508593509050815b8015613e07577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b828281518110613dcd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350613d8f565b50949350505050565b600061118e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061400a565b600061118e83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614041565b613e9c614088565b5060408051808201909152815115815260208083015190820152919050565b613ec3614088565b613ecb614088565b8251845115159015151415613efe5783511515815260208085015190840151613ef49190613c15565b602082015261118e565b8260200151846020015110613f275783511515815260208085015190840151613ef49190613c4a565b82511515815260208084015190850151613f419190613c4a565b60208201529392505050565b602001516fffffffffffffffffffffffffffffffff161590565b613f6f614088565b50604080518082019091526000808252602082015290565b600081610af163ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743332000000000000000000000084613460565b600081848411156140025760405162461bcd60e51b8152600401610a049190615457565b505050900390565b6000818361402b5760405162461bcd60e51b8152600401610a049190615457565b50600083858161403757fe5b0495945050505050565b600081836140625760405162461bcd60e51b8152600401610a049190615457565b5082848161406c57fe5b06949350505050565b6040518060200160405280600081525090565b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b6040518060a001604052806140d2614075565b81526020016140df614075565b81526020016140ec614075565b81526020016140f9614075565b8152602001600081525090565b60408051610140810182526000808252602082018190529181019190915260608101614130614088565b815260200161413d61409f565b81526000602082018190526040820152606001614158614075565b8152602001614165614075565b8152602001614172614088565b905290565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60405180606001604052806060815260200160608152602001600081525090565b6040805160e08101825260008082526020820181905291810182905260608101829052608081019190915260a0810161420461409f565b8152602001614172614075565b8035610af18161599c565b600082601f83011261422d57600080fd5b813561424061423b826157a8565b615781565b81815260209384019390925082018360005b8381101561427e57813586016142688882614457565b8452506020928301929190910190600101614252565b5050505092915050565b600082601f83011261429957600080fd5b81356142a761423b826157a8565b915081818352602084019350602081019050838560408402820111156142cc57600080fd5b60005b8381101561427e57816142e288826145d5565b845250602090920191604091909101906001016142cf565b600082601f83011261430b57600080fd5b813561431961423b826157a8565b9150818183526020840193506020810190508385604084028201111561433e57600080fd5b60005b8381101561427e5781614354888261461c565b84525060209092019160409190910190600101614341565b600082601f83011261437d57600080fd5b813561438b61423b826157a8565b915081818352602084019350602081019050838560208402820111156143b057600080fd5b60005b8381101561427e57816143c68882614681565b84525060209283019291909101906001016143b3565b8035610af1816159b0565b600082601f8301126143f857600080fd5b813561440661423b826157c9565b9150808252602083016020830185838301111561442257600080fd5b61442d83828461591e565b50505092915050565b8035610af1816159b9565b8035610af1816159c2565b8035610af1816159cf565b6000610160828403121561446a57600080fd5b614475610100615781565b905060006144838484614441565b825250602061449484848301614681565b60208301525060406144a884828501614533565b60408301525060c06144bc84828501614681565b60608301525060e06144d084828501614681565b6080830152506101006144e584828501614211565b60a0830152506101206144fa84828501614681565b60c08301525061014082013567ffffffffffffffff81111561451b57600080fd5b614527848285016143e7565b60e08301525092915050565b60006080828403121561454557600080fd5b61454f6080615781565b9050600061455d84846143dc565b825250602061456e8484830161444c565b60208301525060406145828482850161444c565b604083015250606061459684828501614681565b60608301525092915050565b6000602082840312156145b457600080fd5b6145be6020615781565b905060006145cc8484614681565b82525092915050565b6000604082840312156145e757600080fd5b6145f16040615781565b905060006145ff8484614211565b825250602061461084848301614681565b60208301525092915050565b60006040828403121561462e57600080fd5b6146386040615781565b905060006146468484614211565b8252506020614610848483016143dc565b60006020828403121561466957600080fd5b6146736020615781565b905060006145cc848461468c565b8035610af1816159dc565b8051610af1816159dc565b6000602082840312156146a957600080fd5b6000612b7e8484614211565b600080604083850312156146c857600080fd5b60006146d48585614211565b92505060206146e585828601614211565b9150509250929050565b6000806040838503121561470257600080fd5b600061470e8585614211565b92505060206146e5858286016143dc565b600080600080600080600080610100898b03121561473c57600080fd5b60006147488b8b614211565b98505060206147598b828c01614436565b975050604061476a8b828c01614436565b965050606061477b8b828c016145a2565b955050608061478c8b828c016145a2565b94505060a061479d8b828c01614681565b93505060c06147ae8b828c016143dc565b92505060e06147bf8b828c016143dc565b9150509295985092959890939650565b600080604083850312156147e257600080fd5b823567ffffffffffffffff8111156147f957600080fd5b61480585828601614288565b925050602083013567ffffffffffffffff81111561482257600080fd5b6146e58582860161421c565b60006020828403121561484057600080fd5b813567ffffffffffffffff81111561485757600080fd5b612b7e848285016142fa565b6000806040838503121561487657600080fd5b823567ffffffffffffffff81111561488d57600080fd5b6146d48582860161436c565b6000602082840312156148ab57600080fd5b6000612b7e84846145a2565b6000604082840312156148c957600080fd5b6000612b7e84846145d5565b600080606083850312156148e857600080fd5b60006148f485856145d5565b92505060406146e585828601614681565b60006020828403121561491757600080fd5b6000612b7e8484614657565b60006020828403121561493557600080fd5b6000612b7e8484614681565b60006020828403121561495357600080fd5b6000612b7e848461468c565b6000806040838503121561497257600080fd5b60006146d48585614681565b6000806040838503121561499157600080fd5b600061470e8585614681565b600080604083850312156149b057600080fd5b60006149bc8585614681565b92505060206146e585828601614436565b600080604083850312156149e057600080fd5b60006149ec8585614681565b92505060206146e5858286016145a2565b60008060408385031215614a1057600080fd5b6000614a1c8585614681565b92505060206146e585828601614681565b6000614a398383614a85565b505060200190565b600061118e8383614f07565b6000614a59838361503b565b505060400190565b6000614a598383615123565b6000614a598383615229565b6000614a398383615243565b614a8e81615822565b82525050565b6000614a9f82615815565b614aa98185615819565b9350614ab48361580f565b8060005b83811015614ae2578151614acc8882614a2d565b9750614ad78361580f565b925050600101614ab8565b509495945050505050565b6000614af882615815565b614b028185615819565b935083602082028501614b148561580f565b8060005b85811015614b4e5784840389528151614b318582614a41565b9450614b3c8361580f565b60209a909a0199925050600101614b18565b5091979650505050505050565b6000614b6682615815565b614b708185615819565b9350614b7b8361580f565b8060005b83811015614ae2578151614b938882614a4d565b9750614b9e8361580f565b925050600101614b7f565b6000614bb482615815565b614bbe8185615819565b9350614bc98361580f565b8060005b83811015614ae2578151614be18882614a61565b9750614bec8361580f565b925050600101614bcd565b6000614c0282615815565b614c0c8185615819565b9350614c178361580f565b8060005b83811015614ae2578151614c2f8882614a6d565b9750614c3a8361580f565b925050600101614c1b565b6000614c5082615815565b614c5a8185615819565b9350614c658361580f565b8060005b83811015614ae2578151614c7d8882614a79565b9750614c888361580f565b925050600101614c69565b6000614c9e82615815565b614ca88185615819565b9350614cb38361580f565b8060005b83811015614ae2578151614ccb8882614a79565b9750614cd68361580f565b925050600101614cb7565b614a8e8161582d565b614a8e614cf682615832565b61587c565b614a8e614cf682615857565b614a8e614cf68261587c565b6000614d1e82615815565b614d2881856109db565b9350614d3881856020860161592a565b9290920192915050565b6000614d4d82615815565b614d578185615819565b9350614d6781856020860161592a565b614d7081615956565b9093019392505050565b614a8e8161587f565b614a8e816158fd565b614a8e81615908565b614a8e81615913565b6000614dab602683615819565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b6000614e0a601b83615819565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614e43602183615819565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000614ea2602083615819565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000614edb601f83615819565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b8051600090610160840190614f1c8582614d83565b506020830151614f2f6020860182615243565b506040830151614f426040860182614fa9565b506060830151614f5560c0860182615243565b506080830151614f6860e0860182615243565b5060a0830151614f7c610100860182614a85565b5060c0830151614f90610120860182615243565b5060e083015184820361014086015261268d8282614d42565b80516080830190614fba8482614ce1565b506020820151614fcd6020850182614d8c565b506040820151614fe06040850182614d8c565b5060608201516134f86060850182615243565b805160208301906134f88482615243565b80516060830190615015848261525e565b506020820151615028602085018261525e565b5060408201516134f8604085018261524c565b8051604083019061504c8482614a85565b5060208201516134f86020850182615243565b80516101c08301906150718482614a85565b5060208201516150846020850182614ce1565b5060408201516150976040850182614ce1565b5060608201516150aa6060850182615218565b5060808201516150bd60a0850182615004565b5060a08201516150d1610100850182614d7a565b5060c08201516150e5610120850182614d7a565b5060e08201516150f9610140850182614ff3565b5061010082015161510e610160850182614ff3565b506101208201516134f8610180850182615229565b805160408301906151348482614ce1565b5060208201516134f8602085018261523a565b805160c08301906151588482615255565b50602082015161516b6020850182615255565b50604082015161517e6040850182615255565b5060608201516151916060850182615255565b5060808201516151a46080850182615255565b5060a08201516134f860a085018261523a565b805160a08301906151c88482614ff3565b5060208201516151db6020850182614ff3565b5060408201516151ee6040850182614ff3565b5060608201516152016060850182614ff3565b5060808201516134f86080850182615243565b9052565b80516040830190615134848261523a565b8051604083019061504c8482614ce1565b614a8e816158a8565b614a8e8161587c565b614a8e816158d6565b614a8e816158df565b614a8e816158ec565b60006152738284614d07565b50602001919050565b60006152888286614d13565b91506152948285614cfb565b60028201915061268d8284614d13565b60006152b08289614d13565b91506152bc8288614cfb565b6002820191506152cc8287614d13565b91506152d88286614cfb565b6002820191506152e88285614d13565b91506152f48284614cea565b506001019695505050505050565b600061530e828b614d13565b915061531a828a614cfb565b60028201915061532a8289614d13565b91506153368288614cfb565b6002820191506153468287614d13565b91506153528286614cfb565b6002820191506153628285614d13565b915061536e8284614cea565b5060010198975050505050505050565b60208101610af18284614a85565b6040810161539a8285614a85565b61118e6020830184614ce1565b606081016153b58286614a85565b6153c26020830185615243565b612b7e6040830184615243565b6020808252810161118e8184614c45565b608080825281016153f18187614c45565b905081810360208301526154058186614a94565b905081810360408301526154198185614ba9565b90508181036060830152613b8e8184614bf7565b60208101610af18284614ce1565b60208101610af18284614d7a565b60208101610af18284614d95565b6020808252810161118e8184614d42565b60208082528101610af181614d9e565b60208082528101610af181614dfd565b60208082528101610af181614e36565b60208082528101610af181614e95565b60208082528101610af181614ece565b60208101610af18284614ff3565b60608101610af18284615004565b6101c08101610af1828461505f565b61026081016154f2828761505f565b6155006101c0830186615004565b61550e610220830185614ff3565b61268d610240830184614ff3565b60408101610af18284615123565b60c08101610af18284615147565b60a08101610af182846151b7565b606081016155548286615214565b6155616020830185614a85565b612b7e6040830184614a85565b6060810161557c8286615214565b6155896020830185614a85565b612b7e6040830184614ce1565b61012081016155a5828c615214565b6155b2602083018b614a85565b6155bf604083018a614d7a565b6155cc6060830189614d7a565b6155d96080830188614ff3565b6155e660a0830187614ff3565b6155f360c0830186615243565b61560060e0830185614ce1565b61560e610100830184614ce1565b9a9950505050505050505050565b6060810161562a8286615214565b818103602083015261563c8185614b5b565b9050818103604083015261268d8184614aed565b6060810161565e8286615214565b81810360208301526156708185614c93565b9050612b7e6040830184614a85565b6040810161568d8285615214565b61118e6020830184614ff3565b604081016156a88285615214565b61118e6020830184615243565b606081016156c38286615214565b6155616020830185615243565b606081016156de8286615214565b6155896020830185615243565b606081016156f98286615214565b6157066020830185615243565b612b7e6040830184614d7a565b606081016157218286615214565b61572e6020830185615243565b612b7e6040830184614ff3565b606081016153b58286615214565b60408101610af18284615218565b6040810161568d8285614ff3565b60408101610af18284615229565b60208101610af18284615243565b60405181810167ffffffffffffffff811182821017156157a057600080fd5b604052919050565b600067ffffffffffffffff8211156157bf57600080fd5b5060209081020190565b600067ffffffffffffffff8211156157e057600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b6000610af1826158bd565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b6000610af182615822565b806109db8161597e565b806109db81615988565b806109db81615992565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b67ffffffffffffffff1690565b6bffffffffffffffffffffffff1690565b6000610af18261588a565b6000610af182615894565b6000610af18261589e565b82818337506000910152565b60005b8381101561594557818101518382015260200161592d565b838111156134f85750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6009811061224557fe5b6002811061224557fe5b6003811061224557fe5b6159a581615822565b811461224557600080fd5b6159a58161582d565b6159a58161587f565b6009811061224557600080fd5b6002811061224557600080fd5b6159a58161587c56fea365627a7a723158207ce20ac0655675b3ab3ddcb1af3df44e9b83138155c22751c3c91249399d7de16c6578706572696d656e74616cf564736f6c634300051000400000000000000000000000000000000000000000000000000214e8348c4f000000000000000000000000000000000000000000000000000000b1a2bc2ec500000000000000000000000000000000000000000000000000000c7d713b49da0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000001bc16d674ec8000000000000000000000000000000000000000000000000000006f05b59d3b200000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000000000000000000000000000056bc75e2d63100000