@dolomite-exchange/dolomite-margin 0.2.6 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/build/contracts/Account.json +11 -11
  2. package/build/contracts/Actions.json +11 -11
  3. package/build/contracts/Address.json +1 -1
  4. package/build/contracts/Admin.json +23 -23
  5. package/build/contracts/AdminImpl.json +35 -307
  6. package/build/contracts/AdvancedMath.json +7 -7
  7. package/build/contracts/AmmRebalancerProxy.json +577 -621
  8. package/build/contracts/AmmRebalancerProxyV1.json +78 -32
  9. package/build/contracts/Babylonian.json +1 -1
  10. package/build/contracts/Bits.json +9 -9
  11. package/build/contracts/Cache.json +13 -13
  12. package/build/contracts/ChainlinkPriceOracleV1.json +16 -16
  13. package/build/contracts/Context.json +1 -1
  14. package/build/contracts/CustomTestToken.json +9 -9
  15. package/build/contracts/Decimal.json +9 -9
  16. package/build/contracts/DelayedMultiSig.json +9 -9
  17. package/build/contracts/DolomiteAmmERC20.json +11 -11
  18. package/build/contracts/DolomiteAmmFactory.json +14 -52
  19. package/build/contracts/DolomiteAmmLibrary.json +24 -24
  20. package/build/contracts/DolomiteAmmPair.json +27 -27
  21. package/build/contracts/DolomiteAmmRouterProxy.json +30 -363
  22. package/build/contracts/DolomiteMargin.json +21 -67
  23. package/build/contracts/DoubleExponentInterestSetter.json +15 -21
  24. package/build/contracts/EnumerableSet.json +7 -7
  25. package/build/contracts/ErroringOmiseToken.json +9 -9
  26. package/build/contracts/ErroringToken.json +10 -10
  27. package/build/contracts/Events.json +17 -17
  28. package/build/contracts/ExcessivelySafeCall.json +35 -35
  29. package/build/contracts/Exchange.json +15 -15
  30. package/build/contracts/Expiry.json +36 -36
  31. package/build/contracts/Getters.json +33 -33
  32. package/build/contracts/IAutoTrader.json +9 -9
  33. package/build/contracts/ICallee.json +7 -7
  34. package/build/contracts/IChainlinkAggregator.json +5 -5
  35. package/build/contracts/IDolomiteAmmERC20.json +5 -5
  36. package/build/contracts/IDolomiteAmmFactory.json +9 -9
  37. package/build/contracts/IDolomiteAmmPair.json +9 -9
  38. package/build/contracts/IDolomiteMargin.json +23 -23
  39. package/build/contracts/IERC20.json +1 -1
  40. package/build/contracts/IERC20Detailed.json +5 -5
  41. package/build/contracts/IExchangeWrapper.json +5 -5
  42. package/build/contracts/IExpiry.json +9 -9
  43. package/build/contracts/IInterestSetter.json +7 -7
  44. package/build/contracts/ILiquidationCallback.json +7 -7
  45. package/build/contracts/IMakerOracle.json +5 -5
  46. package/build/contracts/IOasisDex.json +5 -5
  47. package/build/contracts/IPriceOracle.json +7 -7
  48. package/build/contracts/IRecyclable.json +9 -9
  49. package/build/contracts/ITransferProxy.json +5 -5
  50. package/build/contracts/IUniswapV2Callee.json +5 -5
  51. package/build/contracts/IUniswapV2Factory.json +5 -5
  52. package/build/contracts/IUniswapV2Pair.json +5 -5
  53. package/build/contracts/IUniswapV2Router.json +5 -5
  54. package/build/contracts/IWETH.json +5 -5
  55. package/build/contracts/Interest.json +15 -15
  56. package/build/contracts/LiquidateOrVaporizeImpl.json +32 -83
  57. package/build/contracts/LiquidatorProxyHelper.json +23 -23
  58. package/build/contracts/LiquidatorProxyV1.json +30 -36
  59. package/build/contracts/LiquidatorProxyV1WithAmm.json +49 -105
  60. package/build/contracts/Math.json +1 -1
  61. package/build/contracts/Migrations.json +8 -14
  62. package/build/contracts/Monetary.json +7 -7
  63. package/build/contracts/MultiCall.json +8 -14
  64. package/build/contracts/MultiSig.json +7 -7
  65. package/build/contracts/OmiseToken.json +8 -8
  66. package/build/contracts/OnlyDolomiteMargin.json +11 -11
  67. package/build/contracts/Operation.json +15 -15
  68. package/build/contracts/OperationImpl.json +39 -47
  69. package/build/contracts/Ownable.json +1 -1
  70. package/build/contracts/PartiallyDelayedMultiSig.json +9 -9
  71. package/build/contracts/PayableProxy.json +17 -23
  72. package/build/contracts/Permission.json +11 -11
  73. package/build/contracts/PolynomialInterestSetter.json +13 -13
  74. package/build/contracts/RecyclableTokenProxy.json +25 -25
  75. package/build/contracts/ReentrancyGuard.json +1 -1
  76. package/build/contracts/Require.json +7 -7
  77. package/build/contracts/SafeERC20.json +1 -1
  78. package/build/contracts/SafeETH.json +7 -7
  79. package/build/contracts/SafeLiquidationCallback.json +17 -17
  80. package/build/contracts/SafeMath.json +1 -1
  81. package/build/contracts/SignedOperationProxy.json +21 -104
  82. package/build/contracts/SimpleFeeOwner.json +18 -63
  83. package/build/contracts/State.json +9 -9
  84. package/build/contracts/Storage.json +37 -37
  85. package/build/contracts/TestAmmRebalancerProxy.json +32 -58
  86. package/build/contracts/TestAutoTrader.json +22 -22
  87. package/build/contracts/TestBtcUsdChainlinkAggregator.json +10 -10
  88. package/build/contracts/TestCallee.json +19 -19
  89. package/build/contracts/TestChainlinkPriceOracleV1.json +10 -94
  90. package/build/contracts/TestCounter.json +7 -7
  91. package/build/contracts/TestDaiUsdChainlinkAggregator.json +11 -11
  92. package/build/contracts/TestDolomiteMargin.json +22 -22
  93. package/build/contracts/TestDoubleExponentInterestSetter.json +10 -10
  94. package/build/contracts/TestEthUsdChainlinkAggregator.json +11 -11
  95. package/build/contracts/TestExchangeWrapper.json +28 -28
  96. package/build/contracts/TestInterestSetter.json +13 -13
  97. package/build/contracts/TestLib.json +22 -22
  98. package/build/contracts/TestLinkUsdChainlinkAggregator.json +11 -11
  99. package/build/contracts/TestLiquidateCallback.json +719 -719
  100. package/build/contracts/TestLiquidationCallback.json +13 -13
  101. package/build/contracts/TestLrcEthChainlinkAggregator.json +11 -11
  102. package/build/contracts/TestMakerOracle.json +10 -10
  103. package/build/contracts/TestMaticUsdChainlinkAggregator.json +10 -10
  104. package/build/contracts/TestOasisDex.json +12 -12
  105. package/build/contracts/TestOperationImpl.json +14 -14
  106. package/build/contracts/TestPolynomialInterestSetter.json +10 -10
  107. package/build/contracts/TestPriceAggregator.json +9 -9
  108. package/build/contracts/TestPriceOracle.json +13 -13
  109. package/build/contracts/TestRecyclableToken.json +9 -9
  110. package/build/contracts/TestSimpleCallee.json +15 -15
  111. package/build/contracts/TestToken.json +9 -9
  112. package/build/contracts/TestTrader.json +17 -17
  113. package/build/contracts/TestUniswapAmmRebalancerProxy.json +16 -16
  114. package/build/contracts/TestUsdcUsdChainlinkAggregator.json +11 -11
  115. package/build/contracts/TestWETH.json +9 -9
  116. package/build/contracts/Time.json +9 -9
  117. package/build/contracts/Token.json +9 -9
  118. package/build/contracts/TokenA.json +10 -10
  119. package/build/contracts/TokenB.json +10 -10
  120. package/build/contracts/TokenC.json +10 -10
  121. package/build/contracts/TokenD.json +10 -10
  122. package/build/contracts/TokenE.json +10 -10
  123. package/build/contracts/TokenF.json +10 -10
  124. package/build/contracts/TransferProxy.json +22 -28
  125. package/build/contracts/TypedSignature.json +9 -9
  126. package/build/contracts/Types.json +9 -9
  127. package/build/contracts/UQ112x112.json +7 -7
  128. package/build/contracts/UniswapV2ERC20.json +7 -7
  129. package/build/contracts/UniswapV2Factory.json +12 -12
  130. package/build/contracts/UniswapV2Library.json +20 -20
  131. package/build/contracts/UniswapV2Pair.json +17 -17
  132. package/build/contracts/UniswapV2Router02.json +16 -16
  133. package/build/contracts/WETH9.json +1 -1
  134. package/contracts/external/amm/DolomiteAmmERC20.sol +135 -0
  135. package/contracts/external/amm/DolomiteAmmFactory.sol +122 -0
  136. package/contracts/external/amm/DolomiteAmmPair.sol +573 -0
  137. package/contracts/external/amm/SimpleFeeOwner.sol +107 -0
  138. package/contracts/external/helpers/LiquidatorProxyHelper.sol +252 -0
  139. package/contracts/external/helpers/OnlyDolomiteMargin.sol +63 -0
  140. package/contracts/external/interestsetters/DoubleExponentInterestSetter.sol +212 -0
  141. package/contracts/external/interestsetters/PolynomialInterestSetter.sol +205 -0
  142. package/contracts/external/interfaces/IChainlinkAggregator.sol +33 -0
  143. package/contracts/external/interfaces/IDolomiteAmmERC20.sol +52 -0
  144. package/contracts/external/interfaces/IDolomiteAmmFactory.sol +42 -0
  145. package/contracts/external/interfaces/IDolomiteAmmPair.sol +116 -0
  146. package/contracts/external/interfaces/IExpiry.sol +70 -0
  147. package/contracts/external/interfaces/IMakerOracle.sol +52 -0
  148. package/contracts/external/interfaces/IOasisDex.sol +326 -0
  149. package/contracts/external/interfaces/ITransferProxy.sol +53 -0
  150. package/contracts/external/interfaces/IUniswapV2Router.sol +134 -0
  151. package/contracts/external/lib/AdvancedMath.sol +23 -0
  152. package/contracts/external/lib/DolomiteAmmLibrary.sol +323 -0
  153. package/contracts/external/lib/TypedSignature.sol +120 -0
  154. package/contracts/external/lib/UQ112x112.sol +22 -0
  155. package/contracts/external/multisig/DelayedMultiSig.sol +206 -0
  156. package/contracts/external/multisig/MultiSig.sol +571 -0
  157. package/contracts/external/multisig/PartiallyDelayedMultiSig.sol +174 -0
  158. package/contracts/external/oracles/ChainlinkPriceOracleV1.sol +197 -0
  159. package/contracts/external/oracles/TestChainlinkPriceOracleV1.sol +98 -0
  160. package/contracts/external/proxies/AmmRebalancerProxyV1.sol +465 -0
  161. package/contracts/external/proxies/DolomiteAmmRouterProxy.sol +877 -0
  162. package/contracts/external/proxies/LiquidatorProxyV1.sol +507 -0
  163. package/contracts/external/proxies/LiquidatorProxyV1WithAmm.sol +574 -0
  164. package/contracts/external/proxies/PayableProxy.sol +146 -0
  165. package/contracts/external/proxies/RecyclableTokenProxy.sol +463 -0
  166. package/contracts/external/proxies/SignedOperationProxy.sol +553 -0
  167. package/contracts/external/proxies/TransferProxy.sol +207 -0
  168. package/contracts/external/traders/Expiry.sol +532 -0
  169. package/contracts/external/uniswap-v2/UniswapV2ERC20.sol +118 -0
  170. package/contracts/external/uniswap-v2/UniswapV2Factory.sol +67 -0
  171. package/contracts/external/uniswap-v2/UniswapV2Pair.sol +283 -0
  172. package/contracts/external/uniswap-v2/UniswapV2Router02.sol +566 -0
  173. package/contracts/external/uniswap-v2/interfaces/IUniswapV2Callee.sol +13 -0
  174. package/contracts/external/uniswap-v2/interfaces/IUniswapV2Factory.sol +18 -0
  175. package/contracts/external/uniswap-v2/interfaces/IUniswapV2Pair.sol +67 -0
  176. package/contracts/external/uniswap-v2/interfaces/IWETH.sol +7 -0
  177. package/contracts/external/uniswap-v2/libraries/SafeETH.sol +29 -0
  178. package/contracts/external/uniswap-v2/libraries/UniswapV2Library.sol +117 -0
  179. package/contracts/external/utils/MultiCall.sol +95 -0
  180. package/contracts/protocol/impl/artifacts/OperationImpl.json +80 -0
  181. package/contracts/protocol/impl/artifacts/OperationImpl_metadata.json +193 -0
  182. package/dist/build/published_contracts/AdminImpl.json +2 -2
  183. package/dist/build/published_contracts/AmmRebalancerProxyV1.json +5 -0
  184. package/dist/build/published_contracts/ChainlinkPriceOracleV1.json +1 -1
  185. package/dist/build/published_contracts/DolomiteAmmFactory.json +1 -1
  186. package/dist/build/published_contracts/DolomiteAmmRouterProxy.json +1 -1
  187. package/dist/build/published_contracts/DoubleExponentInterestSetter.json +2 -2
  188. package/dist/build/published_contracts/Expiry.json +1 -1
  189. package/dist/build/published_contracts/LiquidatorProxyV1.json +1 -1
  190. package/dist/build/published_contracts/LiquidatorProxyV1WithAmm.json +1 -1
  191. package/dist/build/published_contracts/MultiCall.json +1 -1
  192. package/dist/build/published_contracts/PayableProxy.json +2 -2
  193. package/dist/build/published_contracts/SignedOperationProxy.json +2 -2
  194. package/dist/build/published_contracts/SimpleFeeOwner.json +1 -1
  195. package/dist/build/published_contracts/TestUniswapAmmRebalancerProxy.json +140 -0
  196. package/dist/build/published_contracts/TransferProxy.json +1 -1
  197. package/dist/src/lib/Contracts.d.ts +3 -1
  198. package/dist/src/lib/Contracts.js +7 -3
  199. package/dist/src/lib/Contracts.js.map +1 -1
  200. package/package.json +2 -1
@@ -2223,15 +2223,15 @@
2223
2223
  "type": "function"
2224
2224
  }
2225
2225
  ],
2226
- "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginRatio\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"liquidationSpread\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRate\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"minBorrowedValue\",\"type\":\"tuple\"}],\"internalType\":\"struct Storage.RiskParams\",\"name\":\"rp\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"marginRatioMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationSpreadMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"earningsRateMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"marginPremiumMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"spreadPremiumMax\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"minBorrowedValueMax\",\"type\":\"uint128\"}],\"internalType\":\"struct Storage.RiskLimits\",\"name\":\"rl\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"trusted\",\"type\":\"bool\"}],\"name\":\"LogOperatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountMarketsWithNonZeroBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getAccountPar\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getAccountParNoMarketCheck\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountStatus\",\"outputs\":[{\"internalType\":\"enum Account.Status\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountValues\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getAccountWei\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAdjustedAccountValues\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getEarningsRate\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"autoTrader\",\"type\":\"address\"}],\"name\":\"getIsAutoTraderSpecial\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getIsGlobalOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getIsLocalOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLiquidationSpread\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"heldMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedMarketId\",\"type\":\"uint256\"}],\"name\":\"getLiquidationSpreadForPair\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMarginRatio\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarket\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRecyclable\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"borrow\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"supply\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.TotalPar\",\"name\":\"totalPar\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint96\",\"name\":\"borrow\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"supply\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"index\",\"type\":\"tuple\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"priceOracle\",\"type\":\"address\"},{\"internalType\":\"contract IInterestSetter\",\"name\":\"interestSetter\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"spreadPremium\",\"type\":\"tuple\"}],\"internalType\":\"struct Storage.Market\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketCachedIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint96\",\"name\":\"borrow\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"supply\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketCurrentIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint96\",\"name\":\"borrow\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"supply\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getMarketIdByTokenAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketInterestRate\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Interest.Rate\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketInterestSetter\",\"outputs\":[{\"internalType\":\"contract IInterestSetter\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketIsClosing\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketIsRecyclable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketMarginPremium\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketPriceOracle\",\"outputs\":[{\"internalType\":\"contract IPriceOracle\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketSpreadPremium\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketTotalPar\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"borrow\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"supply\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.TotalPar\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketWithInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRecyclable\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"borrow\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"supply\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.TotalPar\",\"name\":\"totalPar\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint96\",\"name\":\"borrow\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"supply\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"index\",\"type\":\"tuple\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"priceOracle\",\"type\":\"address\"},{\"internalType\":\"contract IInterestSetter\",\"name\":\"interestSetter\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"spreadPremium\",\"type\":\"tuple\"}],\"internalType\":\"struct Storage.Market\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint96\",\"name\":\"borrow\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"supply\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Price\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Interest.Rate\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinBorrowedValue\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getNumExcessTokens\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumMarkets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getNumberOfMarketsWithBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getRecyclableMarkets\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRiskLimits\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"marginRatioMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationSpreadMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"earningsRateMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"marginPremiumMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"spreadPremiumMax\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"minBorrowedValueMax\",\"type\":\"uint128\"}],\"internalType\":\"struct Storage.RiskLimits\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRiskParams\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginRatio\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"liquidationSpread\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRate\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"minBorrowedValue\",\"type\":\"tuple\"}],\"internalType\":\"struct Storage.RiskParams\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info[]\",\"name\":\"accounts\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum Actions.ActionType\",\"name\":\"actionType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"accountId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"enum Types.AssetDenomination\",\"name\":\"denomination\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.AssetReference\",\"name\":\"ref\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.AssetAmount\",\"name\":\"amount\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"primaryMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryMarketId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"otherAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"otherAccountId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Actions.ActionArgs[]\",\"name\":\"actions\",\"type\":\"tuple[]\"}],\"name\":\"operate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"priceOracle\",\"type\":\"address\"},{\"internalType\":\"contract IInterestSetter\",\"name\":\"interestSetter\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"spreadPremium\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRecyclable\",\"type\":\"bool\"}],\"name\":\"ownerAddMarket\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"marketIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"salvager\",\"type\":\"address\"}],\"name\":\"ownerRemoveMarkets\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"autoTrader\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"special\",\"type\":\"bool\"}],\"name\":\"ownerSetAutoTraderSpecial\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRate\",\"type\":\"tuple\"}],\"name\":\"ownerSetEarningsRate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ownerSetGlobalOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"contract IInterestSetter\",\"name\":\"interestSetter\",\"type\":\"address\"}],\"name\":\"ownerSetInterestSetter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"}],\"name\":\"ownerSetIsClosing\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"spread\",\"type\":\"tuple\"}],\"name\":\"ownerSetLiquidationSpread\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"}],\"name\":\"ownerSetMarginPremium\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"ratio\",\"type\":\"tuple\"}],\"name\":\"ownerSetMarginRatio\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"minBorrowedValue\",\"type\":\"tuple\"}],\"name\":\"ownerSetMinBorrowedValue\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"priceOracle\",\"type\":\"address\"}],\"name\":\"ownerSetPriceOracle\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"spreadPremium\",\"type\":\"tuple\"}],\"name\":\"ownerSetSpreadPremium\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"ownerWithdrawExcessTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"ownerWithdrawUnsupportedTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"market\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"name\":\"setAccountBalance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"enum Account.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"setAccountStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"market\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint96\",\"name\":\"borrow\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"supply\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"index\",\"type\":\"tuple\"}],\"name\":\"setMarketIndex\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"trusted\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorArg[]\",\"name\":\"args\",\"type\":\"tuple[]\"}],\"name\":\"setOperators\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"operate((address,uint256)[],(uint8,uint256,(bool,uint8,uint8,uint256),uint256,uint256,address,uint256,bytes)[])\":{\"params\":{\"accounts\":\"A list of all accounts that will be used in this operation. Cannot contain duplicates. In each action, the relevant account will be referred-to by its index in the list.\",\"actions\":\"An ordered list of all actions that will be taken in this operation. The actions will be processed in order.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setOperators((address,bool)[])\":{\"params\":{\"args\":\"A list of OperatorArgs which have an address and a boolean. The boolean value denotes whether to approve (true) or revoke approval (false) for that address.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{\"operate((address,uint256)[],(uint8,uint256,(bool,uint8,uint8,uint256),uint256,uint256,address,uint256,bytes)[])\":{\"notice\":\"The main entry-point to DolomiteMargin that allows users and contracts to manage accounts. Take one or more actions on one or more accounts. The msg.sender must be the owner or operator of all accounts except for those being liquidated, vaporized, or traded with. One call to operate() is considered a singular \\\"operation\\\". Account collateralization is ensured only after the completion of the entire operation.\"},\"ownerAddMarket(address,address,address,(uint256),(uint256),bool,bool)\":{\"notice\":\"Add a new market to DolomiteMargin. Must be for a previously-unsupported ERC20 token.\"},\"ownerRemoveMarkets(uint256[],address)\":{\"notice\":\"Removes a market from DolomiteMargin, sends any remaining tokens in this contract to `salvager` and invokes the recyclable callback\"},\"ownerSetAutoTraderSpecial(address,bool)\":{\"notice\":\"Approve (or disapprove) an auto trader that can only be called by a global operator. IE for expirations\"},\"ownerSetEarningsRate((uint256))\":{\"notice\":\"Set the global earnings-rate variable that determines what percentage of the interest paid by borrowers gets passed-on to suppliers.\"},\"ownerSetGlobalOperator(address,bool)\":{\"notice\":\"Approve (or disapprove) an address that is permissioned to be an operator for all accounts in DolomiteMargin. Intended only to approve smart-contracts.\"},\"ownerSetInterestSetter(uint256,address)\":{\"notice\":\"Set the interest-setter for a market.\"},\"ownerSetIsClosing(uint256,bool)\":{\"notice\":\"Set (or unset) the status of a market to \\\"closing\\\". The borrowedValue of a market cannot increase while its status is \\\"closing\\\".\"},\"ownerSetLiquidationSpread((uint256))\":{\"notice\":\"Set the global liquidation spread. This is the spread between oracle prices that incentivizes the liquidation of risky positions.\"},\"ownerSetMarginPremium(uint256,(uint256))\":{\"notice\":\"Set a premium on the minimum margin-ratio for a market. This makes it so that any positions that include this market require a higher collateralization to avoid being liquidated.\"},\"ownerSetMarginRatio((uint256))\":{\"notice\":\"Set the global minimum margin-ratio that every position must maintain to prevent being liquidated.\"},\"ownerSetMinBorrowedValue((uint256))\":{\"notice\":\"Set the global minimum-borrow value which is the minimum value of any new borrow on DolomiteMargin.\"},\"ownerSetPriceOracle(uint256,address)\":{\"notice\":\"Set the price oracle for a market.\"},\"ownerSetSpreadPremium(uint256,(uint256))\":{\"notice\":\"Set a premium on the liquidation spread for a market. This makes it so that any liquidations that include this market have a higher spread than the global default.\"},\"ownerWithdrawExcessTokens(uint256,address)\":{\"notice\":\"Withdraw an ERC20 token for which there is an associated market. Only excess tokens can be withdrawn. The number of excess tokens is calculated by taking the current number of tokens held in DolomiteMargin, adding the number of tokens owed to DolomiteMargin by borrowers, and subtracting the number of tokens owed to suppliers by DolomiteMargin.\"},\"ownerWithdrawUnsupportedTokens(address,address)\":{\"notice\":\"Withdraw an ERC20 token for which there is no associated market.\"},\"setOperators((address,bool)[])\":{\"notice\":\"Approves/disapproves any number of operators. An operator is an external address that has the same permissions to manipulate an account as the owner of the account. Operators are simply addresses and therefore may either be externally-owned Ethereum accounts OR smart contracts. * Operators are also able to act as AutoTrader contracts on behalf of the account owner if the operator is a smart contract and implements the IAutoTrader interface.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestDolomiteMargin.sol\":\"TestDolomiteMargin\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/Admin.sol\":{\"keccak256\":\"0x49bd668fba504841be143e261d4f713f7bd618308608eb5c4f04369feb586b0e\",\"urls\":[\"bzz-raw://635f6f066cb5cffb94dae6b284d040d1f8bf2299bdbb2263188642123c1b965e\",\"dweb:/ipfs/QmPMqmH5PLwARm5Jy3gEhMdgcMKAoV4NjG41QLnWV6U9Ek\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/DolomiteMargin.sol\":{\"keccak256\":\"0xe603b63adf6d1eb3384977729db974e246679fa10135d6bf31bd08a0e6ee407c\",\"urls\":[\"bzz-raw://0e612713abbac4a3a8439eae7498388d88dad936993ceac078de07415a4f4cad\",\"dweb:/ipfs/QmdMApfMXX2bgLC5W9agH14hs6EA5A39u6A2ofQYmwMW8s\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/Getters.sol\":{\"keccak256\":\"0xfbaf01df86497dbfdfc6faeca28219aeab710c4df95f46f7d042568479e234ab\",\"urls\":[\"bzz-raw://376e23ff206d0d86a37f413e8b90e60cf1a11d64ca84bd2bf02049c326f50402\",\"dweb:/ipfs/QmaGK3dsRM6oTZqwezLDgva8qxLyuJsbbNCwVWn3QdBvdz\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/Operation.sol\":{\"keccak256\":\"0xaebae2196c8e39cb0965dc0d88979683d4b8d5a70a45259c5c88a2c9b21dc730\",\"urls\":[\"bzz-raw://66d81ffed219df67800129b079c3bb4b3246ff1e05f39a5157fb8a3681fe0351\",\"dweb:/ipfs/QmaBv43NeqUy5PJPYCtZuGL8H2L4P4B6zgTzZQPAADkK3D\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/Permission.sol\":{\"keccak256\":\"0x8a0f17ece121f76094335482d99a2ec6dd1728cc4b699aede024afd5d51ae660\",\"urls\":[\"bzz-raw://3ab2b049bb5686fafc6450c9796abac1c724a40ed0810685f64c4dab089faf5d\",\"dweb:/ipfs/QmV1XHkR2aS39byy4Ff6Px8JyHYjnZEugAJsBSz1gdQ47q\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/State.sol\":{\"keccak256\":\"0x4fe464f16c7f490dbe7f43e9672ddf1296852a4a652303a47a91bc7a3c72419b\",\"urls\":[\"bzz-raw://725237be55e03e728e268407c47704af1c93b1fddf277b5e6447d864b9f0bbfb\",\"dweb:/ipfs/QmNZfmH9XMXGdd21DMv2aNU4X152uDVUrpns64kZn1ryVn\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/AdminImpl.sol\":{\"keccak256\":\"0xbcb580fd35399cf0b2e20cdeb3f2bb25ad791a16577a5e9842ebf3fd5b205f67\",\"urls\":[\"bzz-raw://a308759195b5d5d91a76b9509299a68f4d62dc2a363f2546b9f2d28fa8ba3ff0\",\"dweb:/ipfs/QmTgd11YSyCVaMHxQhheQTpvSY3M8123LjozpjaVDvBLx4\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/LiquidateOrVaporizeImpl.sol\":{\"keccak256\":\"0xcc8da88b265e994c6e29c16de47d7f07ae772d8b35f25c95bfd7e9e56160efe0\",\"urls\":[\"bzz-raw://3d4f2e52ab9590093b7ae981e203d04b84b4fe670d6a6ff5a568645a92ea0e0d\",\"dweb:/ipfs/QmfFeAaG497cu6j2ykGV8guwUgwdYjUFXDwCjbLYNS2T58\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/OperationImpl.sol\":{\"keccak256\":\"0x32e415843e918648c740cbffc591e04bd158ae06f911d60ed844ce30ad13e7f0\",\"urls\":[\"bzz-raw://cee2fd0c63854065d2504f87a12ea3bede82d25552520c8bb72b752a697754b1\",\"dweb:/ipfs/QmedgadJUphfSxAPrg1EPvJoAhBBxU1hK18xQ2QVocmDyX\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IAutoTrader.sol\":{\"keccak256\":\"0x62cbb936c4abdfc1ab33bb3ee5505279cc7354f9404bedf74ee3d099623a6dfa\",\"urls\":[\"bzz-raw://91ab2bd45600b1d3268a5592deb8b396d0fc4bba05a00d1aa4b4b785a6ee46ad\",\"dweb:/ipfs/QmVmBdFGFuA6XzaWxVAxxFDH81mhomg6uJvnYi4NYRHfDk\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/ICallee.sol\":{\"keccak256\":\"0x0b65209369307041e67c28634fc17a19e953199ac42a88198b76578f7fa9b0f8\",\"urls\":[\"bzz-raw://46618851882c2bc5a6212bb0a8ad095e0f38049f24ecf404163ad6b493c728a1\",\"dweb:/ipfs/QmRx4VabTaXTGSyMt8NCTZ7nMiWCHfrvqZjRaKNRir3zEe\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x1e73364879c267fdd2bfd871e62ee58ee3d65fbef3b71e3cc104fbff499eca6c\",\"urls\":[\"bzz-raw://e3b1327980a5949afd52cff4713f47ee4fdee9a8b376ceaa3402f5c9696b8c1b\",\"dweb:/ipfs/QmbhQzVEdaraPJizT5DTtk6CDzH3guHNipHW5T23uTtFkX\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IExchangeWrapper.sol\":{\"keccak256\":\"0xfca7f5635821bbc8ff21db6982471a5f20071365496b74a8202e59494d0f327f\",\"urls\":[\"bzz-raw://eb289cb96c83a3ff7fd72d9a646694d324ee955874ef61e986850459b5841d16\",\"dweb:/ipfs/QmeeiaqShMqWpttPJ3GuDwxFzmq235HMVG7vDnLWnCupaZ\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/ILiquidationCallback.sol\":{\"keccak256\":\"0xad98b922c02e36b8ce992097639f6ecd859b5dc97b62334e72fc97dc68a2adc7\",\"urls\":[\"bzz-raw://fd1a2c1f7b1fb114430bda41d963c61e1f5467cf45ca9a4e0b4c8e9f2dfff2c5\",\"dweb:/ipfs/QmWv82ML6nUfnWb1S5rPjKQc8ncZDY4tQkaGjBWczWCT2C\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IRecyclable.sol\":{\"keccak256\":\"0x68843eafdee387608bd2e757c91e90c5044fc3724ea3ad5042117ab4af49d639\",\"urls\":[\"bzz-raw://14b71da16f79b9b5356dfb8d9243a141bb87b209e30fc99c9278c9a01e62a1a0\",\"dweb:/ipfs/QmNhdGQbhSBSJ8dTqSuntaqA3ChhkKpwLuhDfS5UGQ461A\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x0ab9a3fabc89984dff748af63d4319ee134051de2d7fc560e34ebaac86198396\",\"urls\":[\"bzz-raw://ab67f499a8ef83dc7e7cf7176a0f66eced40fa228eda8dd2d47e066ab985cf42\",\"dweb:/ipfs/QmXRHbsEYxr2Qsfsj5psXGV5LaPZHuzLiEXzSQJ77WSE27\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x44ec62b766a88a2f65267991e76cab88711e733b826dc9e578cb6ad6b38b2445\",\"urls\":[\"bzz-raw://731a8d44e57c9dcd7fbdefc37a6b5889c0d06defb3bd66b921b2a7db0edf0103\",\"dweb:/ipfs/QmcVbXc9oi5DMxjPtsBF76oJzD6zVjm7RuXgJfP3Goqrrb\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x425bf5764368faca16cc30a64b79d9bbe01fd8150444b58a464971c32450bd85\",\"urls\":[\"bzz-raw://064baf3155da634c5c80cea70bba0dda7a33af934b34f75f596961b4ab9aeafe\",\"dweb:/ipfs/QmTUHXoi9L6CkERyfhFs1jhxU66u2sbc6XRR5cH4TeHEqL\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0x1e6ff383f285e311d07374edda353e14ac4f29201726b0062a2f046c1a2b482c\",\"urls\":[\"bzz-raw://fd11c5db01039bf2c95f3561b08d271b80b7b1cb9fd7f75da887f7609807c5a7\",\"dweb:/ipfs/QmcY6CugdEHaYUa8ZKSnUDhvtVuoLfpDscZcmC91koAn1t\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0x66990bbe3c58d0edf57d3f67ab5280e2a53958ce44f75c335c4c50542321bccb\",\"urls\":[\"bzz-raw://724cfdb5c99121aab5262679e46766a2883e344749870d7dbfa92d1617f68bf2\",\"dweb:/ipfs/QmYjAsS45f6UG2u3zuTks2HVfMYtyFCVMgUvD7Gt7XtU3R\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x9710b0ab43cc2d964d8722a0aabbedbf7e9d4756dcc0b4ab7c46c1ee68653042\",\"urls\":[\"bzz-raw://2405593d37f0f224bfca556f01634a9755bb0ed626f74dd15293106a8b4dd7d3\",\"dweb:/ipfs/QmTZ16S336jsoDnK5p3vAZRzimBkmdEJibncHVBJxBt469\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Events.sol\":{\"keccak256\":\"0x0c71c063b3a1b4e653d94c05f6fc49de43ccc28838e406faccb1c93f424995a8\",\"urls\":[\"bzz-raw://73268db2286565ecc242da93930780e8e4794015c8c0e58d336981ffdc6cfd3a\",\"dweb:/ipfs/QmRYzhuRtKXnTscERvYS9XzjqdQFBoJZoHwRAekHo6w6Zy\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/ExcessivelySafeCall.sol\":{\"keccak256\":\"0x44694441ccb1a3ec0328a4336680549e4dfb606616d022acfe3ed8c4359ba478\",\"urls\":[\"bzz-raw://948143d0061a02614f0e1a833e676b49d138dda5e098b14f14f3be9908f32d38\",\"dweb:/ipfs/QmbtgtpmjHY5ksTWa4h7E8wayjfjW5uun1Ek8ZRcLSYXMT\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Exchange.sol\":{\"keccak256\":\"0x793484b5aa923b4cb7c9671914e3d9f2d19bee6ee680424adaa97e3b9de930c4\",\"urls\":[\"bzz-raw://cebf09a8d36b303b0b92ee850ea2a802946ac43cb26d1da819f5ea74d6e5110f\",\"dweb:/ipfs/QmeQJZSaHmJskcgL3spQTvn6tYqE9Yo3vfbMTuhJenzhwf\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x73e75454568c5dfc3bdcf7dbf2ddce6ab8d3d317618bc1f1957f7667e15d3799\",\"urls\":[\"bzz-raw://7b1c8a9a79c8ffdbb0fa633f713ae3dfeac93b31d2b1639614ac32d473fb8250\",\"dweb:/ipfs/QmfARP93W2mgeVwD9Lkd3yVmbCLF2Mos7o8HJ1x6WYQmxZ\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Math.sol\":{\"keccak256\":\"0x0c0c913b6ccdb69063f9ec84879fcad20a1ee6f44402c9f5ec2b4f5b9f2fa16b\",\"urls\":[\"bzz-raw://89b32eefb57e5e63ad8c6e079ae7bf2d2c8622776cd45af0cf304e1cafd6e078\",\"dweb:/ipfs/Qmcj7yRnYuTgKC3ZqZqe8rynHGYVDS3UrFExcVGcqeaDHY\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0xe641662503ea29ca959e84674188c3e9deaaf64c5623fb9560a4301c521ca1d3\",\"urls\":[\"bzz-raw://b10a04c7d014b99eb792c8c774e203c846d070b30cf0b715325fc07838ed6a6d\",\"dweb:/ipfs/QmUqZWnbchfEY9jM647yQamHe4GzspfUeRQF9k2nn1Hixd\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/SafeLiquidationCallback.sol\":{\"keccak256\":\"0x8084c1137ea386da7b6b943d3469f102bb4a5f69c944fe32503cb034d47ea26e\",\"urls\":[\"bzz-raw://387f7373cd99c62049d7139852ceda52b611ccfe305d2a19c7366d1de81c9919\",\"dweb:/ipfs/QmVHnW1gZ9MwLxWxFhZJwjW86SDv89o22phCBx11jQGxdY\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0xf930fbde3ab43ec8f079dbad062453b502542f53b7eec670c8e86c7a2e47dd9a\",\"urls\":[\"bzz-raw://e1c402fc55471e8372be478e99f91c28373f096e31f0ef1d5072dfdb81541c29\",\"dweb:/ipfs/QmTc8WSfFCbxNQqNpq1vptUVFxteKQ8HWEhyXREyPZ2neu\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x233d6ebf965711bf980f4bb2e672fb1a11b4b879fd41c884b3c2b704417d0d0c\",\"urls\":[\"bzz-raw://6478ff81706d531f9438b96274a7b904abbbd9c631540c68c6a89c3accf27abf\",\"dweb:/ipfs/QmWe9vkz3qwVjrcbmcTL8wgkjLPsrEqxcqPJL9ujM8PPbp\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0xd7bcae9e3c570544fc946a00cc7695106a64c20bc130d0183612c0410a531d19\",\"urls\":[\"bzz-raw://0ff5ffd6abb9ed223a64128c131afd962bec07fb9867cb62593906b339c76920\",\"dweb:/ipfs/QmbTrJL4bekvBqqaw6wXnBhYzS9uAqULSWF2VzW4cdfsM5\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xab134538648a2e223a7fe61db03c14f687657a5d37147f93c9088f11735aa311\",\"urls\":[\"bzz-raw://79dc7d2b30576d2349b99267642ac8d5fb7939c920b8d8045379d3614238bdc3\",\"dweb:/ipfs/QmaQJYg1nirHoWSC6G38Cjsk9pZBzEaNrGXKqTsvAzbyES\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestDolomiteMargin.sol\":{\"keccak256\":\"0xf70acde617765ea130b7bdf33294ada7b29eec696529003de1a6a7044d85d761\",\"urls\":[\"bzz-raw://b58125100d2446a3109cc612713bf41ac24d21deadbf14255320aa4e98c2cc22\",\"dweb:/ipfs/QmVPqZ1yGZhzp3MsU64w5SqiSfTZzkkZp85cLZq8NJfWav\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestOperationImpl.sol\":{\"keccak256\":\"0x402c23b97d383f6b01720480cad64d36dbc5da8a216eed4a5bbe6e4688e201f6\",\"urls\":[\"bzz-raw://06bd34638734f6c944de81d059876d7f79d4e78896d8bf2c0f1f3d88a26c3f85\",\"dweb:/ipfs/QmTYRMPjQfRmHqGty16YB7b5avCHye8ZupmUZEg2KCSopm\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}",
2227
- "bytecode": "0x6080604052664765747465727360c81b600f553480156200001f57600080fd5b5060405162005f4d38038062005f4d833981016040819052620000429162000329565b81816000620000596001600160e01b03620001a016565b600e80546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600e8054600160a01b60ff60a01b199091161790558151516008556020808301515160095560408084015151600a5560609384015151600b558251600c80549385015192850151958501516001600160401b03199485166001600160401b0393841617600160401b600160801b03191668010000000000000000948416850217600160801b600160c01b031916600160801b97841697909702969096176001600160c01b0316600160c01b96831696909602959095179094556080830151600d805460a09095015194909316941693909317600160401b600160c01b0319166001600160801b0390921690920217905550620003db9050565b3390565b600060208284031215620001b757600080fd5b620001c3602062000369565b90506000620001d384846200030f565b82525092915050565b600060c08284031215620001ef57600080fd5b620001fb60c062000369565b905060006200020b84846200031c565b82525060206200021e848483016200031c565b602083015250604062000234848285016200031c565b60408301525060606200024a848285016200031c565b606083015250608062000260848285016200031c565b60808301525060a06200027684828501620002fc565b60a08301525092915050565b6000608082840312156200029557600080fd5b620002a1608062000369565b90506000620002b18484620001a4565b8252506020620002c484848301620001a4565b6020830152506040620002da84828501620001a4565b6040830152506060620002f084828501620001a4565b60608301525092915050565b80516200030981620003ab565b92915050565b80516200030981620003c5565b80516200030981620003d0565b60008061014083850312156200033e57600080fd5b60006200034c858562000282565b92505060806200035f85828601620001dc565b9150509250929050565b6040518181016001600160401b03811182821017156200038857600080fd5b604052919050565b6001600160801b031690565b90565b6001600160401b031690565b620003b68162000390565b8114620003c257600080fd5b50565b620003b6816200039c565b620003b6816200039f565b615b6280620003eb6000396000f3fe608060405234801561001057600080fd5b50600436106103af5760003560e01c80638da5cb5b116101f4578063d5ecf7c51161011a578063ec6e3987116100ad578063f2fde38b1161007c578063f2fde38b14610870578063f941605214610883578063fd04b60614610896578063fd47eda6146108a9576103af565b8063ec6e398714610824578063ef6957d014610837578063f1061ba81461084a578063f2901ae21461085d576103af565b8063e5520228116100e9578063e5520228146107d4578063e8e72f75146107dc578063eb1c6e6b146107ef578063eb44fdd314610804576103af565b8063d5ecf7c51461077b578063d96e406d1461078e578063deec053d146107a1578063e51bfcb4146107b4576103af565b8063b548b89211610192578063c8e1882611610161578063c8e1882614610722578063cb04a34c14610735578063d24c48bc14610755578063d36cca9014610768576103af565b8063b548b892146106c4578063c0bb72b7146106e7578063c1460942146106fa578063c190c2ec14610702576103af565b80638fae3be1116101ce5780638fae3be11461067857806398d4611b1461068b578063a67a6a451461069e578063b42cbcd3146106b1576103af565b80638da5cb5b146106555780638f32d59b1461065d5780638f6bc65914610665576103af565b80633a031bf0116102d95780636979479511610277578063835666701161024657806383566670146106095780638439dd921461061c57806385b53fc81461062f5780638928378e14610642576103af565b806369794795146105c15780636a8194e7146105d6578063715018a6146105f95780637e9eaf4114610601576103af565b80634f3c1542116102b35780634f3c15421461057357806356ea84b21461057b5780635735a4301461059b5780635ac7d17c146105ae576103af565b80633a031bf01461052d57806347d1b53c146105405780634be8741414610560576103af565b8063197f0f05116103515780632e822af3116103205780632e822af3146104e15780633063bce2146104f457806334fd45f114610507578063387a498a1461051a576103af565b8063197f0f05146104865780631a7777bb14610499578063295c39a5146104b95780632a560845146104ce576103af565b8063062bd3e91161038d578063062bd3e914610412578063121fb72f14610432578063124f914c146104455780631336836414610466576103af565b80630339a0c4146103b4578063042069d6146103dd578063052f72d7146103f2575b600080fd5b6103c76103c2366004614a3d565b6108bc565b6040516103d491906154f1565b60405180910390f35b6103f06103eb366004614ae7565b610991565b005b610405610400366004614748565b610a90565b6040516103d4919061554f565b610425610420366004614a3d565b610aa8565b6040516103d491906154a0565b6103f0610440366004614ab7565b610ac4565b610458610453366004614954565b610b73565b6040516103d4929190615869565b610479610474366004614a3d565b610b97565b6040516103d4919061555d565b610479610494366004614a3d565b610bce565b6104ac6104a7366004614a3d565b610c05565b6040516103d491906155da565b6104c1610c3c565b6040516103d49190615885565b6104c16104dc366004614766565b610c42565b6103f06104ef366004614936565b610d5e565b6103f0610502366004614936565b610e51565b6104c1610515366004614954565b610efe565b6103f0610528366004614936565b610f10565b61040561053b366004614766565b610fbd565b61055361054e3660046149a2565b610fd7565b6040516103d4919061563e565b6103f061056e366004614ae7565b610ffa565b6104ac6110a9565b61058e610589366004614a3d565b6110c5565b6040516103d491906155e8565b6104056105a9366004614a3d565b6110fa565b6104056105bc366004614a3d565b611134565b6105c961115c565b6040516103d4919061565a565b6105e96105e4366004614954565b6111b8565b6040516103d49493929190615502565b6103f061136f565b6104ac611402565b6103f0610617366004614972565b61141e565b6103f061062a3660046147d0565b611490565b6103f061063d3660046148cb565b611595565b6104ac610650366004614a3d565b61167c565b6104256116b1565b6104056116cd565b6104c1610673366004614a79565b61170d565b6104c1610686366004614748565b6117be565b6103c7610699366004614954565b6117f2565b6103f06106ac36600461486c565b611805565b6103f06106bf366004614b17565b611890565b6106d76106d2366004614a3d565b611a35565b6040516103d49493929190615605565b6103f06106f5366004614936565b611a91565b6104ac611b3e565b6107156107103660046149a2565b611b5a565b6040516103d49190615877565b6105536107303660046149a2565b611b9a565b610748610743366004614a3d565b611ba2565b6040516103d4919061585b565b6104ac610763366004614b47565b611bc4565b6103f0610776366004614900565b611bf0565b610715610789366004614a3d565b611c9f565b6103f061079c3660046149d2565b611cc1565b61058e6107af366004614a3d565b611d56565b6107c76107c2366004614954565b611d78565b6040516103d4919061556b565b6104ac611d8a565b6103f06107ea366004614ab7565b611da6565b6107f7611e55565b6040516103d4919061564c565b610817610812366004614a3d565b611ef7565b6040516103d491906155f6565b6103f06108323660046147a0565b612062565b6103f0610845366004614a98565b612111565b610405610858366004614748565b6121c0565b6103f061086b3660046147a0565b6121d2565b6103f061087e366004614748565b612281565b610458610891366004614954565b6122b1565b6104ac6108a4366004614a3d565b6122cc565b6104ac6108b7366004614a3d565b612303565b606060008090506060836040519080825280602002602001820160405280156108ef578160200160208202803883390190505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60005260036020527fb1ee3b3d0d99532dd9f14b22c0b908d4eec0e052c3827bbed2d6c3986954d08c549091505b801580159061094d57508483105b15610987578082848060010195508151811061096557fe5b602090810291909101810191909152600091825260039052604090205461093f565b509150505b919050565b6109996116cd565b6109be5760405162461bcd60e51b81526004016109b5906155ba565b60405180910390fd5b600e54600160a01b900460ff166109e75760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f8854ab3e00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90638854ab3e90610a499060009086908690600401615833565b60006040518083038186803b158015610a6157600080fd5b505af4158015610a75573d6000803e3d6000fd5b5050600e805460ff60a01b1916600160a01b17905550505050565b6000610aa2818363ffffffff61233816565b92915050565b6000610ab382612367565b610aa260008363ffffffff6123c816565b610acc6116cd565b610ae85760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610b115760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517faa92e34800000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063aa92e34890610a49906000908690869060040161580b565b610b7b614076565b610b83614076565b610b8e8360006123f4565b91509150915091565b6000610ba282612367565b5060009081526001602052604090206003015473ffffffffffffffffffffffffffffffffffffffff1690565b6000610bd982612367565b5060009081526001602052604090206004015473ffffffffffffffffffffffffffffffffffffffff1690565b610c0d614076565b610c1682612367565b506000908152600160209081526040918290208251918201909252600690910154815290565b60005490565b6000610c4c6116cd565b610c685760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610c915760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fdd32998a00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063dd32998a90610cf39060009087908790600401615668565b60206040518083038186803b158015610d0b57600080fd5b505af4158015610d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d439190810190614a5b565b9050600e805460ff60a01b1916600160a01b17905592915050565b610d666116cd565b610d825760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610dab5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517ff9cacc4c00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063f9cacc4c90610e0b906000908590600401615785565b60006040518083038186803b158015610e2357600080fd5b505af4158015610e37573d6000803e3d6000fd5b5050600e805460ff60a01b1916600160a01b179055505050565b610e596116cd565b610e755760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610e9e5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f0f44e6bc00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90630f44e6bc90610e0b906000908590600401615785565b6000610aa2818363ffffffff61249916565b610f186116cd565b610f345760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610f5d5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f311401d000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063311401d090610e0b906000908590600401615785565b6000610fd081848463ffffffff6124e016565b9392505050565b610fdf614089565b610fe882612367565b610fd06000848463ffffffff61251d16565b6110026116cd565b61101e5760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff166110475760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f7335079b00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90637335079b90610a499060009086908690600401615833565b6110b1614076565b506040805160208101909152600854815290565b6110cd6140a0565b6110d682612367565b610aa2826110eb60008263ffffffff61259c16565b6000919063ffffffff61262016565b600061110582612367565b506000908152600160205260409020547501000000000000000000000000000000000000000000900460ff1690565b600061113f82612367565b50600090815260016020526040902054600160a01b900460ff1690565b6111646140c0565b506040805160a08101825260085460808201908152815281516020818101845260095482528083019190915282518082018452600a548152828401528251908101909252600b548252606081019190915290565b6060808080806111cf60008763ffffffff61267816565b9050606081516040519080825280602002602001820160405280156111fe578160200160208202803883390190505b5090506060825160405190808252806020026020018201604052801561123e57816020015b61122b614089565b8152602001906001900390816112235790505b5090506060835160405190808252806020026020018201604052801561127e57816020015b61126b614089565b8152602001906001900390816112635790505b50905060005b845181101561135f576112a985828151811061129c57fe5b6020026020010151610aa8565b8482815181106112b557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061130c8a8683815181106112ff57fe5b6020026020010151610fd7565b83828151811061131857fe5b60200260200101819052506113408a86838151811061133357fe5b6020026020010151611b5a565b82828151811061134c57fe5b6020908102919091010152600101611284565b5092989197509550909350915050565b6113776116cd565b6113935760405162461bcd60e51b81526004016109b5906155ba565b600e5460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b61140a614076565b506040805160208101909152600b54815290565b815173ffffffffffffffffffffffffffffffffffffffff166000908152600460209081526040808320828601518452909152902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561148757fe5b02179055505050565b6114986116cd565b6114b45760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff166114dd5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f4f32fb2700000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90634f32fb2790611549906000908b908b908b908b908b908b908b906004016156b8565b60006040518083038186803b15801561156157600080fd5b505af4158015611575573d6000803e3d6000fd5b5050600e805460ff60a01b1916600160a01b179055505050505050505050565b60005b81518110156116785760008282815181106115af57fe5b602002602001015160000151905060008383815181106115cb57fe5b60209081029190910181015181015133600081815260058452604080822073ffffffffffffffffffffffffffffffffffffffff8816835290945283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001683151517905591519092507f4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a63279061166690859085906154ae565b60405180910390a25050600101611598565b5050565b611684614076565b61168d82612367565b610aa2826116a260008263ffffffff6123c816565b6000919063ffffffff6126bd16565b600e5473ffffffffffffffffffffffffffffffffffffffff1690565b600e5460009073ffffffffffffffffffffffffffffffffffffffff166116f16127ec565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60006117176116cd565b6117335760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff1661175c5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fb25328e000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063b25328e090610cf390600090879087906004016157d5565b60006117c9826127f0565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b6060610aa260008363ffffffff61267816565b600e54600160a01b900460ff1661182e5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fbd76ecfd00000000000000000000000000000000000000000000000000000000815273__OperationImpl_________________________9063bd76ecfd90610a499060009086908690600401615722565b6118986140a0565b5060008281526001602090815260409182902082516060810184526002909101546bffffffffffffffffffffffff80821683526c0100000000000000000000000082048116938301939093527801000000000000000000000000000000000000000000000000900463ffffffff16928101929092528251166119275780516bffffffffffffffffffffffff1682525b60208201516bffffffffffffffffffffffff16611957576020808201516bffffffffffffffffffffffff16908301525b5060009182526001602090815260409283902082516002909101805492840151939094015163ffffffff167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff9485166c01000000000000000000000000027fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff959093167fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090941693909317939093161716179055565b611a3d6140ff565b611a456140a0565b611a4d614076565b611a55614076565b611a5e85612367565b611a6785611ef7565b611a70866110c5565b611a798761167c565b611a8288612303565b93509350935093509193509193565b611a996116cd565b611ab55760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16611ade5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f54dd351600000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906354dd351690610e0b906000908590600401615785565b611b46614076565b506040805160208101909152600954815290565b611b62614089565b611b6b82612367565b610fd0611b806000858563ffffffff61251d16565b611b95846110eb60008263ffffffff61259c16565b612859565b610fe8614089565b611baa614089565b611bb382612367565b610aa260008363ffffffff61290a16565b611bcc614076565b611bd583612367565b611bde82612367565b610fd06000848463ffffffff61296a16565b611bf86116cd565b611c145760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16611c3d5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fd963729100000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063d963729190610a499060009086908690600401615756565b611ca7614089565b611cb082612367565b610aa260008363ffffffff612a0116565b611cca82612367565b6040517f81379a5e00000000000000000000000000000000000000000000000000000000815273__TestOperationImpl_____________________906381379a5e90611d21906000908790879087906004016157a0565b60006040518083038186803b158015611d3957600080fd5b505af4158015611d4d573d6000803e3d6000fd5b50505050505050565b611d5e6140a0565b611d6782612367565b610aa260008363ffffffff61259c16565b6000610aa2818363ffffffff612b5c16565b611d92614076565b506040805160208101909152600a54815290565b611dae6116cd565b611dca5760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16611df35760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f8c5dabd100000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90638c5dabd190610a49906000908690869060040161580b565b611e5d614151565b506040805160c081018252600c5467ffffffffffffffff808216835268010000000000000000808304821660208501527001000000000000000000000000000000008304821694840194909452780100000000000000000000000000000000000000000000000090910481166060830152600d549081166080830152919091046fffffffffffffffffffffffffffffffff1660a082015290565b611eff6140ff565b611f0882612367565b50600090815260016020818152604092839020835161012081018552815473ffffffffffffffffffffffffffffffffffffffff8082168352600160a01b820460ff908116151584870152750100000000000000000000000000000000000000000090920490911615158287015285518087018752948301546fffffffffffffffffffffffffffffffff808216875270010000000000000000000000000000000090910416858501526060808301959095528551948501865260028301546bffffffffffffffffffffffff80821687526c01000000000000000000000000820416868601527801000000000000000000000000000000000000000000000000900463ffffffff168587015260808201949094526003820154841660a0820152600482015490931660c0840152835180830185526005820154815260e08401528351918201909352600690920154825261010081019190915290565b61206a6116cd565b6120865760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff166120af5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f3c0c9ddc00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90633c0c9ddc90610a499060009086908690600401615690565b6121196116cd565b6121355760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff1661215e5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f10c87b0600000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906310c87b0690610a4990600090869086906004016157f0565b6000610aa2818363ffffffff612b9b16565b6121da6116cd565b6121f65760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff1661221f5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fe80f802400000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063e80f802490610a499060009086908690600401615690565b6122896116cd565b6122a55760405162461bcd60e51b81526004016109b5906155ba565b6122ae81612bca565b50565b6122b9614076565b6122c1614076565b610b8e8360016123f4565b6122d4614076565b6122dd82612367565b506000908152600160209081526040918290208251918201909252600590910154815290565b61230b614076565b61231482612367565b610aa28261232960008263ffffffff61259c16565b6000919063ffffffff612c8b16565b73ffffffffffffffffffffffffffffffffffffffff166000908152600691909101602052604090205460ff1690565b6000546122ae908210801561239f575060008281526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b600f547f496e76616c6964206d61726b6574000000000000000000000000000000000000612d96565b6000908152600191909101602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6123fc614076565b612404614076565b606061241760008663ffffffff61267816565b9050612421614186565b61242b8251612e29565b905060005b82518110156124675761245f83828151811061244857fe5b602002602001015183612e8890919063ffffffff16565b600101612430565b5061247960008263ffffffff612ef216565b61248c600087838863ffffffff61314116565b9350935050509250929050565b805173ffffffffffffffffffffffffffffffffffffffff16600090815260049290920160209081526040808420928201518452919052902054610100900463ffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600593909301602090815260408085209290931684525290205460ff1690565b612525614089565b50815173ffffffffffffffffffffffffffffffffffffffff1660009081526004840160209081526040808320828601518452825280832084845260030182529182902082518084019093525460ff8116151583526fffffffffffffffffffffffffffffffff61010090910416908201529392505050565b6125a46140a0565b506000908152600191909101602090815260409182902082516060810184526002909101546bffffffffffffffffffffffff80821683526c0100000000000000000000000082041692820192909252780100000000000000000000000000000000000000000000000090910463ffffffff169181019190915290565b6126286140a0565b612630614076565b61264185858563ffffffff612c8b16565b905061266f8382612658888863ffffffff61290a16565b6040805160208101909152600a8a015481526132a4565b95945050505050565b805173ffffffffffffffffffffffffffffffffffffffff16600090815260048301602090815260408083208285015184529091529020606090610fd09060010161340f565b6126c5614076565b600083815260018501602052604090206003015473ffffffffffffffffffffffffffffffffffffffff166126f7614076565b6040517f41976e0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906341976e09906127499087906004016154a0565b60206040518083038186803b15801561276157600080fd5b505afa158015612775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127999190810190614a1f565b805190915061266f9015157f53746f72616765000000000000000000000000000000000000000000000000007f50726963652063616e6e6f74206265207a65726f0000000000000000000000008861346b565b3390565b73ffffffffffffffffffffffffffffffffffffffff80821660008181526002602090815260408083205483526001909152902054600f546122ae9391909116909114907f496e76616c696420746f6b656e00000000000000000000000000000000000000612d96565b612861614089565b602083015183516fffffffffffffffffffffffffffffffff90911690156128cd576040805180820190915260018152602084810151908201906128c29084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61350916565b815250915050610aa2565b6040805180820190915260008152835160208201906128c29084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61350916565b612912614089565b506000818152600180840160209081526040928390208351808501909452909101546fffffffffffffffffffffffffffffffff8082168452700100000000000000000000000000000000909104169082015292915050565b612972614076565b60098401546000848152600186016020908152604091829020825191820190925260069091015481526129af9082906129aa9061359d565b6135d4565b90506129ea816129aa87600101600087815260200190815260200160002060060160405180602001604052908160008201548152505061359d565b604080516020810190915290815295945050505050565b612a09614089565b612a116140a0565b612a21848463ffffffff61259c16565b9050612a2b614089565b612a3b858563ffffffff61290a16565b90506000612a4f868663ffffffff6123c816565b9050612a59614089565b6040805180820182526001815290517f70a08231000000000000000000000000000000000000000000000000000000008152602082019073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190612abc9030906004016154a0565b60206040518083038186803b158015612ad457600080fd5b505afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b0c9190810190614a5b565b90529050612b18614089565b612b20614089565b612b2a85876135ed565b9092509050612b4f82612b43858463ffffffff61369516565b9063ffffffff61369516565b9998505050505050505050565b805173ffffffffffffffffffffffffffffffffffffffff1660009081526004929092016020908152604080842092820151845291905290205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff166000908152600791909101602052604090205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff8116612bfd5760405162461bcd60e51b81526004016109b59061558a565b600e5460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612c93614076565b612c9b614089565b612cab858563ffffffff61290a16565b9050612cb5614089565b612cbd614089565b612cc783866135ed565b91509150612cd3614076565b600087815260018901602052604090206004015473ffffffffffffffffffffffffffffffffffffffff1663e8177dcf612d128a8a63ffffffff6123c816565b846020015186602001516040518463ffffffff1660e01b8152600401612d3a939291906154c9565b60206040518083038186803b158015612d5257600080fd5b505afa158015612d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d8a9190810190614a1f565b98975050505050505050565b82612e2457612da4826136af565b7f3a20000000000000000000000000000000000000000000000000000000000000612dce836136af565b604051602001612de09392919061539e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262461bcd60e51b82526109b591600401615579565b505050565b612e31614186565b604080516000606082018181526080830190935290918291612e69565b612e566141a7565b815260200190600190039081612e4e5790505b508152602001612e7884613783565b8152600060209091015292915050565b815151612ed790157f43616368650000000000000000000000000000000000000000000000000000007f616c726561647920696e697469616c697a656400000000000000000000000000612d96565b612ee58260200151826137bd565b5060400180516001019052565b8060400151604051908082528060200260200182016040528015612f3057816020015b612f1d6141a7565b815260200190600190039081612f155790505b5081526000805b8260200151518110156130e757600083602001518281518110612f5657fe5b602002602001015190505b80156130cc576000612f72826137f3565b90506000612f8084836139ca565b90506000612f94888363ffffffff6123c816565b600083815260018a016020526040902054909150600160a01b900460ff161561304a576040805160a08101825283815273ffffffffffffffffffffffffffffffffffffffff8316602082015260019181019190915260608101612ffd8a8563ffffffff61290a16565b516fffffffffffffffffffffffffffffffff1681526020016130268a858563ffffffff6126bd16565b905287518051600189019890811061303a57fe5b60200260200101819052506130b8565b6040805160a08101825283815273ffffffffffffffffffffffffffffffffffffffff8316602082015260009181018290526060810191909152608081016130988a858563ffffffff6126bd16565b90528751805160018901989081106130ac57fe5b60200260200101819052505b6130c284846139d5565b9350505050612f61565b83604001518314156130de57506130e7565b50600101612f37565b506040820151825151612e2491808414917f53746f7261676500000000000000000000000000000000000000000000000000917f636163686520696e697469616c697a656420696d70726f7065726c7900000000916139de565b613149614076565b613151614076565b613159614076565b613161614076565b600061316c87613aa9565b905060005b8181101561329557613181614089565b6131a48a6131958b8563ffffffff613aae16565b518d919063ffffffff613b2a16565b90506131af81613b99565b156131ba575061328d565b60006131e56131cf8b8563ffffffff613aae16565b608001515160208401519063ffffffff613ba116565b90506131ef614076565b6131f7613bdb565b905089156132425761323f60018e0160006132188e8863ffffffff613aae16565b5181526020808201929092526040908101600020815192830190915260050154815261359d565b90505b82511561326b576132646132568383613bfd565b88519063ffffffff613c1616565b8752613289565b61328661327883836135d4565b87519063ffffffff613c1616565b86525b5050505b600101613171565b50919890975095505050505050565b6132ac6140a0565b6132b4614089565b6132bc614089565b6132c685886135ed565b9150915060006132d4613c3b565b9050600061330c6132fe8a6040015163ffffffff168463ffffffff16613c4b90919063ffffffff16565b89519063ffffffff613ba116565b9050600061331985613b99565b1561332657506000613358565b61333082886135d4565b9050846020015184602001511015613358576133558185602001518760200151613c8d565b90505b8181111561336257fe5b60408051606081019091528a5181906133ab906133a6906bffffffffffffffffffffffff1661339a8188670de0b6b3a7640000613c8d565b9063ffffffff613c1616565b613ca3565b6bffffffffffffffffffffffff908116825260208d8101519201916133e2916133a6911661339a8187670de0b6b3a7640000613c8d565b6bffffffffffffffffffffffff1681526020018463ffffffff16815250955050505050505b949350505050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561345f57602002820191906000526020600020905b81548152602001906001019080831161344b575b50505050509050919050565b8361350357613479836136af565b7f3a200000000000000000000000000000000000000000000000000000000000006134a3846136af565b7f203c0000000000000000000000000000000000000000000000000000000000006134cd85613d02565b604051612de09594939291907f3e00000000000000000000000000000000000000000000000000000000000000906020016153c6565b50505050565b6000831580613516575082155b1561352d57613526600083613e11565b9050610fd0565b600061353f858563ffffffff613ba116565b905061266f61356a600161339a600261355e888463ffffffff613c4b16565b9063ffffffff613e1116565b61357a838663ffffffff613e5316565b101561358757600061358a565b60015b60ff1661339a838663ffffffff613e1116565b6135a5614076565b6040805160208101909152825181906135cc90670de0b6b3a764000063ffffffff613c1616565b905292915050565b6000610fd0838360000151670de0b6b3a7640000613c8d565b6135f5614089565b6135fd614089565b613605614089565b5060408051808201909152600181526020858101516fffffffffffffffffffffffffffffffff1690820152613638614089565b50604080518082019091526000815285516fffffffffffffffffffffffffffffffff166020820152613668614089565b6136728387612859565b905061367c614089565b6136868388612859565b91989197509095505050505050565b61369d614089565b610fd0836136aa84613e95565b613ebc565b606080826040516020016136c39190615389565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801561376c5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811061372f57fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615613767576001018152905061098c565b6136f6565b505060408051600081526020810190915292915050565b606060016101008304016040519080825280602002602001820160405280156137b6578160200160208202803883390190505b5092915050565b815161010082049060ff8316906001821b908590849081106137db57fe5b60200260200101818151179150818152505050505050565b600060ff6fffffffffffffffffffffffffffffffff831615613836577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800161383e565b608083901c92505b67ffffffffffffffff831615613875577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00161387d565b604083901c92505b63ffffffff8316156138b0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016138b8565b602083901c92505b61ffff8316156138e9577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016138f1565b601083901c92505b60ff831615613921577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff801613929565b600883901c92505b600f831615613959577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01613961565b600483901c92505b6003831615613991577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01613999565b600283901c92505b6001831615610aa2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b610100919091020190565b6001901b900390565b84613aa2576139ec846136af565b7f3a20000000000000000000000000000000000000000000000000000000000000613a16856136af565b7f203c000000000000000000000000000000000000000000000000000000000000613a4086613d02565b7f2c20000000000000000000000000000000000000000000000000000000000000613a6a87613d02565b604051612de097969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001615424565b5050505050565b515190565b613ab66141a7565b825151613b0c90808410907f4361636865000000000000000000000000000000000000000000000000000000907f696e76616c696420696e646578000000000000000000000000000000000000009086906139de565b8251805183908110613b1a57fe5b6020026020010151905092915050565b613b32614089565b613b3a614089565b613b4b85858563ffffffff61251d16565b9050613b5681613f4e565b15613b6b57613b63613f68565b915050610fd0565b613b736140a0565b613b83868563ffffffff61259c16565b9050613b8f8282612859565b9695505050505050565b602001511590565b600082613bb057506000610aa2565b82820282848281613bbd57fe5b0414610fd05760405162461bcd60e51b81526004016109b5906155aa565b613be3614076565b506040805160208101909152670de0b6b3a7640000815290565b6000610fd083670de0b6b3a76400008460000151613c8d565b600082820183811015610fd05760405162461bcd60e51b81526004016109b59061559a565b6000613c4642613f88565b905090565b6000610fd083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613fdf565b60006134078261355e868663ffffffff613ba116565b600081610aa26bffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e74393600000000000000000000008461346b565b606081613d43575060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015261098c565b8160005b8115613d5b57600101600a82049150613d47565b6060816040519080825280601f01601f191660200182016040528015613d88576020820181803883390190505b508593509050815b8015613e08577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b828281518110613dce57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350613d90565b50949350505050565b6000610fd083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061400b565b6000610fd083836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614042565b613e9d614089565b5060408051808201909152815115815260208083015190820152919050565b613ec4614089565b613ecc614089565b8251845115159015151415613eff5783511515815260208085015190840151613ef59190613c16565b6020820152610fd0565b8260200151846020015110613f285783511515815260208085015190840151613ef59190613c4b565b82511515815260208084015190850151613f429190613c4b565b60208201529392505050565b602001516fffffffffffffffffffffffffffffffff161590565b613f70614089565b50604080518082019091526000808252602082015290565b600081610aa263ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e74333200000000000000000000008461346b565b600081848411156140035760405162461bcd60e51b81526004016109b59190615579565b505050900390565b6000818361402c5760405162461bcd60e51b81526004016109b59190615579565b50600083858161403857fe5b0495945050505050565b600081836140635760405162461bcd60e51b81526004016109b59190615579565b5082848161406d57fe5b06949350505050565b6040518060200160405280600081525090565b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b60405180608001604052806140d3614076565b81526020016140e0614076565b81526020016140ed614076565b81526020016140fa614076565b905290565b60408051610120810182526000808252602082018190529181019190915260608101614129614089565b81526020016141366140a0565b815260006020820181905260408201526060016140ed614076565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60405180606001604052806060815260200160608152602001600081525090565b6040518060a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160006fffffffffffffffffffffffffffffffff1681526020016140fa614076565b8035610aa281615aae565b600082601f83011261421c57600080fd5b813561422f61422a826158ba565b615893565b81815260209384019390925082018360005b8381101561426d57813586016142578882614451565b8452506020928301929190910190600101614241565b5050505092915050565b600082601f83011261428857600080fd5b813561429661422a826158ba565b915081818352602084019350602081019050838560408402820111156142bb57600080fd5b60005b8381101561426d57816142d1888261462a565b845250602090920191604091909101906001016142be565b600082601f8301126142fa57600080fd5b813561430861422a826158ba565b9150818183526020840193506020810190508385604084028201111561432d57600080fd5b60005b8381101561426d57816143438882614671565b84525060209092019160409190910190600101614330565b600082601f83011261436c57600080fd5b813561437a61422a826158ba565b9150818183526020840193506020810190508385602084028201111561439f57600080fd5b60005b8381101561426d57816143b5888261471c565b84525060209283019291909101906001016143a2565b8035610aa281615ac2565b600082601f8301126143e757600080fd5b81356143f561422a826158db565b9150808252602083016020830185838301111561441157600080fd5b61441c838284615a30565b50505092915050565b8035610aa281615acb565b8035610aa281615ad4565b8035610aa281615ae1565b8035610aa281615aee565b6000610160828403121561446457600080fd5b61446f610100615893565b9050600061447d8484614430565b825250602061448e8484830161471c565b60208301525060406144a28482850161452d565b60408301525060c06144b68482850161471c565b60608301525060e06144ca8482850161471c565b6080830152506101006144df84828501614200565b60a0830152506101206144f48482850161471c565b60c08301525061014082013567ffffffffffffffff81111561451557600080fd5b614521848285016143d6565b60e08301525092915050565b60006080828403121561453f57600080fd5b6145496080615893565b9050600061455784846143cb565b82525060206145688484830161443b565b602083015250604061457c8482850161443b565b60408301525060606145908482850161471c565b60608301525092915050565b6000602082840312156145ae57600080fd5b6145b86020615893565b905060006145c6848461471c565b82525092915050565b6000606082840312156145e157600080fd5b6145eb6060615893565b905060006145f9848461473d565b825250602061460a8484830161473d565b602083015250604061461e84828501614732565b60408301525092915050565b60006040828403121561463c57600080fd5b6146466040615893565b905060006146548484614200565b82525060206146658484830161471c565b60208301525092915050565b60006040828403121561468357600080fd5b61468d6040615893565b9050600061469b8484614200565b8252506020614665848483016143cb565b6000604082840312156146be57600080fd5b6146c86040615893565b905060006146d684846143cb565b825250602061466584848301614711565b6000602082840312156146f957600080fd5b6147036020615893565b905060006145c68484614727565b8035610aa281615afb565b8035610aa281615b04565b8051610aa281615b04565b8035610aa281615b0d565b8035610aa281615b16565b60006020828403121561475a57600080fd5b60006134078484614200565b6000806040838503121561477957600080fd5b60006147858585614200565b925050602061479685828601614200565b9150509250929050565b600080604083850312156147b357600080fd5b60006147bf8585614200565b9250506020614796858286016143cb565b600080600080600080600060e0888a0312156147eb57600080fd5b60006147f78a8a614200565b97505060206148088a828b01614425565b96505060406148198a828b01614425565b955050606061482a8a828b0161459c565b945050608061483b8a828b0161459c565b93505060a061484c8a828b016143cb565b92505060c061485d8a828b016143cb565b91505092959891949750929550565b6000806040838503121561487f57600080fd5b823567ffffffffffffffff81111561489657600080fd5b6148a285828601614277565b925050602083013567ffffffffffffffff8111156148bf57600080fd5b6147968582860161420b565b6000602082840312156148dd57600080fd5b813567ffffffffffffffff8111156148f457600080fd5b613407848285016142e9565b6000806040838503121561491357600080fd5b823567ffffffffffffffff81111561492a57600080fd5b6147858582860161435b565b60006020828403121561494857600080fd5b6000613407848461459c565b60006040828403121561496657600080fd5b6000613407848461462a565b6000806060838503121561498557600080fd5b6000614991858561462a565b925050604061479685828601614446565b600080606083850312156149b557600080fd5b60006149c1858561462a565b92505060406147968582860161471c565b600080600060a084860312156149e757600080fd5b60006149f3868661462a565b9350506040614a048682870161471c565b9250506060614a15868287016146ac565b9150509250925092565b600060208284031215614a3157600080fd5b600061340784846146e7565b600060208284031215614a4f57600080fd5b6000613407848461471c565b600060208284031215614a6d57600080fd5b60006134078484614727565b60008060408385031215614a8c57600080fd5b6000614785858561471c565b60008060408385031215614aab57600080fd5b60006147bf858561471c565b60008060408385031215614aca57600080fd5b6000614ad6858561471c565b925050602061479685828601614425565b60008060408385031215614afa57600080fd5b6000614b06858561471c565b92505060206147968582860161459c565b60008060808385031215614b2a57600080fd5b6000614b36858561471c565b9250506020614796858286016145cf565b60008060408385031215614b5a57600080fd5b6000614b66858561471c565b92505060206147968582860161471c565b6000614b838383614bcf565b505060200190565b6000610fd08383615051565b6000614ba38383615185565b505060400190565b6000614ba38383615258565b6000614ba3838361534b565b6000614b838383615365565b614bd881615934565b82525050565b6000614be982615927565b614bf3818561592b565b9350614bfe83615921565b8060005b83811015614c2c578151614c168882614b77565b9750614c2183615921565b925050600101614c02565b509495945050505050565b6000614c4282615927565b614c4c818561592b565b935083602082028501614c5e85615921565b8060005b85811015614c985784840389528151614c7b8582614b8b565b9450614c8683615921565b60209a909a0199925050600101614c62565b5091979650505050505050565b6000614cb082615927565b614cba818561592b565b9350614cc583615921565b8060005b83811015614c2c578151614cdd8882614b97565b9750614ce883615921565b925050600101614cc9565b6000614cfe82615927565b614d08818561592b565b9350614d1383615921565b8060005b83811015614c2c578151614d2b8882614bab565b9750614d3683615921565b925050600101614d17565b6000614d4c82615927565b614d56818561592b565b9350614d6183615921565b8060005b83811015614c2c578151614d798882614bb7565b9750614d8483615921565b925050600101614d65565b6000614d9a82615927565b614da4818561592b565b9350614daf83615921565b8060005b83811015614c2c578151614dc78882614bc3565b9750614dd283615921565b925050600101614db3565b6000614de882615927565b614df2818561592b565b9350614dfd83615921565b8060005b83811015614c2c578151614e158882614bc3565b9750614e2083615921565b925050600101614e01565b614bd88161593f565b614bd8614e4082615944565b61598e565b614bd8614e4082615969565b614bd8614e408261598e565b6000614e6882615927565b614e72818561098c565b9350614e82818560208601615a3c565b9290920192915050565b6000614e9782615927565b614ea1818561592b565b9350614eb1818560208601615a3c565b614eba81615a68565b9093019392505050565b614bd881615991565b614bd881615a0f565b614bd881615a1a565b614bd881615a25565b6000614ef560268361592b565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b6000614f54601b8361592b565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614f8d60218361592b565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000614fec60208361592b565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000615025601f8361592b565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b80516000906101608401906150668582614ecd565b5060208301516150796020860182615365565b50604083015161508c60408601826150f3565b50606083015161509f60c0860182615365565b5060808301516150b260e0860182615365565b5060a08301516150c6610100860182614bcf565b5060c08301516150da610120860182615365565b5060e083015184820361014086015261266f8282614e8c565b805160808301906151048482614e2b565b5060208201516151176020850182614ed6565b50604082015161512a6040850182614ed6565b5060608201516135036060850182615365565b805160208301906135038482615365565b8051606083019061515f8482615380565b5060208201516151726020850182615380565b506040820151613503604085018261536e565b805160408301906151968482614bcf565b5060208201516135036020850182615365565b80516101808301906151bb8482614bcf565b5060208201516151ce6020850182614e2b565b5060408201516151e16040850182614e2b565b5060608201516151f4606085018261533a565b50608082015161520760a085018261514e565b5060a082015161521b610100850182614ec4565b5060c082015161522f610120850182614ec4565b5060e082015161524361014085018261513d565b5061010082015161350361016085018261513d565b805160408301906152698482614e2b565b506020820151613503602085018261535c565b805160c083019061528d8482615377565b5060208201516152a06020850182615377565b5060408201516152b36040850182615377565b5060608201516152c66060850182615377565b5060808201516152d96080850182615377565b5060a082015161350360a085018261535c565b805160808301906152fd848261513d565b506020820151615310602085018261513d565b506040820151615323604085018261513d565b506060820151613503606085018261513d565b9052565b80516040830190615269848261535c565b805160408301906151968482614e2b565b614bd8816159ba565b614bd88161598e565b614bd8816159e8565b614bd8816159f1565b614bd8816159fe565b60006153958284614e51565b50602001919050565b60006153aa8286614e5d565b91506153b68285614e45565b60028201915061266f8284614e5d565b60006153d28289614e5d565b91506153de8288614e45565b6002820191506153ee8287614e5d565b91506153fa8286614e45565b60028201915061540a8285614e5d565b91506154168284614e34565b506001019695505050505050565b6000615430828b614e5d565b915061543c828a614e45565b60028201915061544c8289614e5d565b91506154588288614e45565b6002820191506154688287614e5d565b91506154748286614e45565b6002820191506154848285614e5d565b91506154908284614e34565b5060010198975050505050505050565b60208101610aa28284614bcf565b604081016154bc8285614bcf565b610fd06020830184614e2b565b606081016154d78286614bcf565b6154e46020830185615365565b6134076040830184615365565b60208082528101610fd08184614d8f565b608080825281016155138187614d8f565b905081810360208301526155278186614bde565b9050818103604083015261553b8185614cf3565b90508181036060830152613b8f8184614d41565b60208101610aa28284614e2b565b60208101610aa28284614ec4565b60208101610aa28284614edf565b60208082528101610fd08184614e8c565b60208082528101610aa281614ee8565b60208082528101610aa281614f47565b60208082528101610aa281614f80565b60208082528101610aa281614fdf565b60208082528101610aa281615018565b60208101610aa2828461513d565b60608101610aa2828461514e565b6101808101610aa282846151a9565b610220810161561482876151a9565b61562261018083018661514e565b6156306101e083018561513d565b61266f61020083018461513d565b60408101610aa28284615258565b60c08101610aa2828461527c565b60808101610aa282846152ec565b606081016156768286615336565b6156836020830185614bcf565b6134076040830184614bcf565b6060810161569e8286615336565b6156ab6020830185614bcf565b6134076040830184614e2b565b61010081016156c7828b615336565b6156d4602083018a614bcf565b6156e16040830189614ec4565b6156ee6060830188614ec4565b6156fb608083018761513d565b61570860a083018661513d565b61571560c0830185614e2b565b612b4f60e0830184614e2b565b606081016157308286615336565b81810360208301526157428185614ca5565b9050818103604083015261266f8184614c37565b606081016157648286615336565b81810360208301526157768185614ddd565b90506134076040830184614bcf565b604081016157938285615336565b610fd0602083018461513d565b60c081016157ae8287615336565b6157bb6020830186615185565b6157c86060830185615365565b61266f6080830184615258565b606081016157e38286615336565b6156836020830185615365565b606081016157fe8286615336565b6156ab6020830185615365565b606081016158198286615336565b6158266020830185615365565b6134076040830184614ec4565b606081016158418286615336565b61584e6020830185615365565b613407604083018461513d565b60408101610aa2828461533a565b60408101615793828561513d565b60408101610aa2828461534b565b60208101610aa28284615365565b60405181810167ffffffffffffffff811182821017156158b257600080fd5b604052919050565b600067ffffffffffffffff8211156158d157600080fd5b5060209081020190565b600067ffffffffffffffff8211156158f257600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b6000610aa2826159cf565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b6000610aa282615934565b8061098c81615a90565b8061098c81615a9a565b8061098c81615aa4565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b67ffffffffffffffff1690565b6bffffffffffffffffffffffff1690565b6000610aa28261599c565b6000610aa2826159a6565b6000610aa2826159b0565b82818337506000910152565b60005b83811015615a57578181015183820152602001615a3f565b838111156135035750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b600981106122ae57fe5b600281106122ae57fe5b600381106122ae57fe5b615ab781615934565b81146122ae57600080fd5b615ab78161593f565b615ab781615991565b600981106122ae57600080fd5b600281106122ae57600080fd5b600381106122ae57600080fd5b615ab7816159ba565b615ab78161598e565b615ab7816159e8565b615ab7816159fe56fea365627a7a72315820b36a4ceaf0d797bbd0e93e4d4761ddcab136d883aaf356d3c55ca6fd1b7ec4d26c6578706572696d656e74616cf564736f6c63430005100040",
2228
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103af5760003560e01c80638da5cb5b116101f4578063d5ecf7c51161011a578063ec6e3987116100ad578063f2fde38b1161007c578063f2fde38b14610870578063f941605214610883578063fd04b60614610896578063fd47eda6146108a9576103af565b8063ec6e398714610824578063ef6957d014610837578063f1061ba81461084a578063f2901ae21461085d576103af565b8063e5520228116100e9578063e5520228146107d4578063e8e72f75146107dc578063eb1c6e6b146107ef578063eb44fdd314610804576103af565b8063d5ecf7c51461077b578063d96e406d1461078e578063deec053d146107a1578063e51bfcb4146107b4576103af565b8063b548b89211610192578063c8e1882611610161578063c8e1882614610722578063cb04a34c14610735578063d24c48bc14610755578063d36cca9014610768576103af565b8063b548b892146106c4578063c0bb72b7146106e7578063c1460942146106fa578063c190c2ec14610702576103af565b80638fae3be1116101ce5780638fae3be11461067857806398d4611b1461068b578063a67a6a451461069e578063b42cbcd3146106b1576103af565b80638da5cb5b146106555780638f32d59b1461065d5780638f6bc65914610665576103af565b80633a031bf0116102d95780636979479511610277578063835666701161024657806383566670146106095780638439dd921461061c57806385b53fc81461062f5780638928378e14610642576103af565b806369794795146105c15780636a8194e7146105d6578063715018a6146105f95780637e9eaf4114610601576103af565b80634f3c1542116102b35780634f3c15421461057357806356ea84b21461057b5780635735a4301461059b5780635ac7d17c146105ae576103af565b80633a031bf01461052d57806347d1b53c146105405780634be8741414610560576103af565b8063197f0f05116103515780632e822af3116103205780632e822af3146104e15780633063bce2146104f457806334fd45f114610507578063387a498a1461051a576103af565b8063197f0f05146104865780631a7777bb14610499578063295c39a5146104b95780632a560845146104ce576103af565b8063062bd3e91161038d578063062bd3e914610412578063121fb72f14610432578063124f914c146104455780631336836414610466576103af565b80630339a0c4146103b4578063042069d6146103dd578063052f72d7146103f2575b600080fd5b6103c76103c2366004614a3d565b6108bc565b6040516103d491906154f1565b60405180910390f35b6103f06103eb366004614ae7565b610991565b005b610405610400366004614748565b610a90565b6040516103d4919061554f565b610425610420366004614a3d565b610aa8565b6040516103d491906154a0565b6103f0610440366004614ab7565b610ac4565b610458610453366004614954565b610b73565b6040516103d4929190615869565b610479610474366004614a3d565b610b97565b6040516103d4919061555d565b610479610494366004614a3d565b610bce565b6104ac6104a7366004614a3d565b610c05565b6040516103d491906155da565b6104c1610c3c565b6040516103d49190615885565b6104c16104dc366004614766565b610c42565b6103f06104ef366004614936565b610d5e565b6103f0610502366004614936565b610e51565b6104c1610515366004614954565b610efe565b6103f0610528366004614936565b610f10565b61040561053b366004614766565b610fbd565b61055361054e3660046149a2565b610fd7565b6040516103d4919061563e565b6103f061056e366004614ae7565b610ffa565b6104ac6110a9565b61058e610589366004614a3d565b6110c5565b6040516103d491906155e8565b6104056105a9366004614a3d565b6110fa565b6104056105bc366004614a3d565b611134565b6105c961115c565b6040516103d4919061565a565b6105e96105e4366004614954565b6111b8565b6040516103d49493929190615502565b6103f061136f565b6104ac611402565b6103f0610617366004614972565b61141e565b6103f061062a3660046147d0565b611490565b6103f061063d3660046148cb565b611595565b6104ac610650366004614a3d565b61167c565b6104256116b1565b6104056116cd565b6104c1610673366004614a79565b61170d565b6104c1610686366004614748565b6117be565b6103c7610699366004614954565b6117f2565b6103f06106ac36600461486c565b611805565b6103f06106bf366004614b17565b611890565b6106d76106d2366004614a3d565b611a35565b6040516103d49493929190615605565b6103f06106f5366004614936565b611a91565b6104ac611b3e565b6107156107103660046149a2565b611b5a565b6040516103d49190615877565b6105536107303660046149a2565b611b9a565b610748610743366004614a3d565b611ba2565b6040516103d4919061585b565b6104ac610763366004614b47565b611bc4565b6103f0610776366004614900565b611bf0565b610715610789366004614a3d565b611c9f565b6103f061079c3660046149d2565b611cc1565b61058e6107af366004614a3d565b611d56565b6107c76107c2366004614954565b611d78565b6040516103d4919061556b565b6104ac611d8a565b6103f06107ea366004614ab7565b611da6565b6107f7611e55565b6040516103d4919061564c565b610817610812366004614a3d565b611ef7565b6040516103d491906155f6565b6103f06108323660046147a0565b612062565b6103f0610845366004614a98565b612111565b610405610858366004614748565b6121c0565b6103f061086b3660046147a0565b6121d2565b6103f061087e366004614748565b612281565b610458610891366004614954565b6122b1565b6104ac6108a4366004614a3d565b6122cc565b6104ac6108b7366004614a3d565b612303565b606060008090506060836040519080825280602002602001820160405280156108ef578160200160208202803883390190505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60005260036020527fb1ee3b3d0d99532dd9f14b22c0b908d4eec0e052c3827bbed2d6c3986954d08c549091505b801580159061094d57508483105b15610987578082848060010195508151811061096557fe5b602090810291909101810191909152600091825260039052604090205461093f565b509150505b919050565b6109996116cd565b6109be5760405162461bcd60e51b81526004016109b5906155ba565b60405180910390fd5b600e54600160a01b900460ff166109e75760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f8854ab3e00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90638854ab3e90610a499060009086908690600401615833565b60006040518083038186803b158015610a6157600080fd5b505af4158015610a75573d6000803e3d6000fd5b5050600e805460ff60a01b1916600160a01b17905550505050565b6000610aa2818363ffffffff61233816565b92915050565b6000610ab382612367565b610aa260008363ffffffff6123c816565b610acc6116cd565b610ae85760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610b115760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517faa92e34800000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063aa92e34890610a49906000908690869060040161580b565b610b7b614076565b610b83614076565b610b8e8360006123f4565b91509150915091565b6000610ba282612367565b5060009081526001602052604090206003015473ffffffffffffffffffffffffffffffffffffffff1690565b6000610bd982612367565b5060009081526001602052604090206004015473ffffffffffffffffffffffffffffffffffffffff1690565b610c0d614076565b610c1682612367565b506000908152600160209081526040918290208251918201909252600690910154815290565b60005490565b6000610c4c6116cd565b610c685760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610c915760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fdd32998a00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063dd32998a90610cf39060009087908790600401615668565b60206040518083038186803b158015610d0b57600080fd5b505af4158015610d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d439190810190614a5b565b9050600e805460ff60a01b1916600160a01b17905592915050565b610d666116cd565b610d825760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610dab5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517ff9cacc4c00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063f9cacc4c90610e0b906000908590600401615785565b60006040518083038186803b158015610e2357600080fd5b505af4158015610e37573d6000803e3d6000fd5b5050600e805460ff60a01b1916600160a01b179055505050565b610e596116cd565b610e755760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610e9e5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f0f44e6bc00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90630f44e6bc90610e0b906000908590600401615785565b6000610aa2818363ffffffff61249916565b610f186116cd565b610f345760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610f5d5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f311401d000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063311401d090610e0b906000908590600401615785565b6000610fd081848463ffffffff6124e016565b9392505050565b610fdf614089565b610fe882612367565b610fd06000848463ffffffff61251d16565b6110026116cd565b61101e5760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff166110475760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f7335079b00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90637335079b90610a499060009086908690600401615833565b6110b1614076565b506040805160208101909152600854815290565b6110cd6140a0565b6110d682612367565b610aa2826110eb60008263ffffffff61259c16565b6000919063ffffffff61262016565b600061110582612367565b506000908152600160205260409020547501000000000000000000000000000000000000000000900460ff1690565b600061113f82612367565b50600090815260016020526040902054600160a01b900460ff1690565b6111646140c0565b506040805160a08101825260085460808201908152815281516020818101845260095482528083019190915282518082018452600a548152828401528251908101909252600b548252606081019190915290565b6060808080806111cf60008763ffffffff61267816565b9050606081516040519080825280602002602001820160405280156111fe578160200160208202803883390190505b5090506060825160405190808252806020026020018201604052801561123e57816020015b61122b614089565b8152602001906001900390816112235790505b5090506060835160405190808252806020026020018201604052801561127e57816020015b61126b614089565b8152602001906001900390816112635790505b50905060005b845181101561135f576112a985828151811061129c57fe5b6020026020010151610aa8565b8482815181106112b557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061130c8a8683815181106112ff57fe5b6020026020010151610fd7565b83828151811061131857fe5b60200260200101819052506113408a86838151811061133357fe5b6020026020010151611b5a565b82828151811061134c57fe5b6020908102919091010152600101611284565b5092989197509550909350915050565b6113776116cd565b6113935760405162461bcd60e51b81526004016109b5906155ba565b600e5460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b61140a614076565b506040805160208101909152600b54815290565b815173ffffffffffffffffffffffffffffffffffffffff166000908152600460209081526040808320828601518452909152902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561148757fe5b02179055505050565b6114986116cd565b6114b45760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff166114dd5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f4f32fb2700000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90634f32fb2790611549906000908b908b908b908b908b908b908b906004016156b8565b60006040518083038186803b15801561156157600080fd5b505af4158015611575573d6000803e3d6000fd5b5050600e805460ff60a01b1916600160a01b179055505050505050505050565b60005b81518110156116785760008282815181106115af57fe5b602002602001015160000151905060008383815181106115cb57fe5b60209081029190910181015181015133600081815260058452604080822073ffffffffffffffffffffffffffffffffffffffff8816835290945283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001683151517905591519092507f4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a63279061166690859085906154ae565b60405180910390a25050600101611598565b5050565b611684614076565b61168d82612367565b610aa2826116a260008263ffffffff6123c816565b6000919063ffffffff6126bd16565b600e5473ffffffffffffffffffffffffffffffffffffffff1690565b600e5460009073ffffffffffffffffffffffffffffffffffffffff166116f16127ec565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60006117176116cd565b6117335760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff1661175c5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fb25328e000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063b25328e090610cf390600090879087906004016157d5565b60006117c9826127f0565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b6060610aa260008363ffffffff61267816565b600e54600160a01b900460ff1661182e5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fbd76ecfd00000000000000000000000000000000000000000000000000000000815273__OperationImpl_________________________9063bd76ecfd90610a499060009086908690600401615722565b6118986140a0565b5060008281526001602090815260409182902082516060810184526002909101546bffffffffffffffffffffffff80821683526c0100000000000000000000000082048116938301939093527801000000000000000000000000000000000000000000000000900463ffffffff16928101929092528251166119275780516bffffffffffffffffffffffff1682525b60208201516bffffffffffffffffffffffff16611957576020808201516bffffffffffffffffffffffff16908301525b5060009182526001602090815260409283902082516002909101805492840151939094015163ffffffff167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff9485166c01000000000000000000000000027fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff959093167fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090941693909317939093161716179055565b611a3d6140ff565b611a456140a0565b611a4d614076565b611a55614076565b611a5e85612367565b611a6785611ef7565b611a70866110c5565b611a798761167c565b611a8288612303565b93509350935093509193509193565b611a996116cd565b611ab55760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16611ade5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f54dd351600000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906354dd351690610e0b906000908590600401615785565b611b46614076565b506040805160208101909152600954815290565b611b62614089565b611b6b82612367565b610fd0611b806000858563ffffffff61251d16565b611b95846110eb60008263ffffffff61259c16565b612859565b610fe8614089565b611baa614089565b611bb382612367565b610aa260008363ffffffff61290a16565b611bcc614076565b611bd583612367565b611bde82612367565b610fd06000848463ffffffff61296a16565b611bf86116cd565b611c145760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16611c3d5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fd963729100000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063d963729190610a499060009086908690600401615756565b611ca7614089565b611cb082612367565b610aa260008363ffffffff612a0116565b611cca82612367565b6040517f81379a5e00000000000000000000000000000000000000000000000000000000815273__TestOperationImpl_____________________906381379a5e90611d21906000908790879087906004016157a0565b60006040518083038186803b158015611d3957600080fd5b505af4158015611d4d573d6000803e3d6000fd5b50505050505050565b611d5e6140a0565b611d6782612367565b610aa260008363ffffffff61259c16565b6000610aa2818363ffffffff612b5c16565b611d92614076565b506040805160208101909152600a54815290565b611dae6116cd565b611dca5760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16611df35760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f8c5dabd100000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90638c5dabd190610a49906000908690869060040161580b565b611e5d614151565b506040805160c081018252600c5467ffffffffffffffff808216835268010000000000000000808304821660208501527001000000000000000000000000000000008304821694840194909452780100000000000000000000000000000000000000000000000090910481166060830152600d549081166080830152919091046fffffffffffffffffffffffffffffffff1660a082015290565b611eff6140ff565b611f0882612367565b50600090815260016020818152604092839020835161012081018552815473ffffffffffffffffffffffffffffffffffffffff8082168352600160a01b820460ff908116151584870152750100000000000000000000000000000000000000000090920490911615158287015285518087018752948301546fffffffffffffffffffffffffffffffff808216875270010000000000000000000000000000000090910416858501526060808301959095528551948501865260028301546bffffffffffffffffffffffff80821687526c01000000000000000000000000820416868601527801000000000000000000000000000000000000000000000000900463ffffffff168587015260808201949094526003820154841660a0820152600482015490931660c0840152835180830185526005820154815260e08401528351918201909352600690920154825261010081019190915290565b61206a6116cd565b6120865760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff166120af5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f3c0c9ddc00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90633c0c9ddc90610a499060009086908690600401615690565b6121196116cd565b6121355760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff1661215e5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f10c87b0600000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906310c87b0690610a4990600090869086906004016157f0565b6000610aa2818363ffffffff612b9b16565b6121da6116cd565b6121f65760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff1661221f5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fe80f802400000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063e80f802490610a499060009086908690600401615690565b6122896116cd565b6122a55760405162461bcd60e51b81526004016109b5906155ba565b6122ae81612bca565b50565b6122b9614076565b6122c1614076565b610b8e8360016123f4565b6122d4614076565b6122dd82612367565b506000908152600160209081526040918290208251918201909252600590910154815290565b61230b614076565b61231482612367565b610aa28261232960008263ffffffff61259c16565b6000919063ffffffff612c8b16565b73ffffffffffffffffffffffffffffffffffffffff166000908152600691909101602052604090205460ff1690565b6000546122ae908210801561239f575060008281526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b600f547f496e76616c6964206d61726b6574000000000000000000000000000000000000612d96565b6000908152600191909101602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6123fc614076565b612404614076565b606061241760008663ffffffff61267816565b9050612421614186565b61242b8251612e29565b905060005b82518110156124675761245f83828151811061244857fe5b602002602001015183612e8890919063ffffffff16565b600101612430565b5061247960008263ffffffff612ef216565b61248c600087838863ffffffff61314116565b9350935050509250929050565b805173ffffffffffffffffffffffffffffffffffffffff16600090815260049290920160209081526040808420928201518452919052902054610100900463ffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600593909301602090815260408085209290931684525290205460ff1690565b612525614089565b50815173ffffffffffffffffffffffffffffffffffffffff1660009081526004840160209081526040808320828601518452825280832084845260030182529182902082518084019093525460ff8116151583526fffffffffffffffffffffffffffffffff61010090910416908201529392505050565b6125a46140a0565b506000908152600191909101602090815260409182902082516060810184526002909101546bffffffffffffffffffffffff80821683526c0100000000000000000000000082041692820192909252780100000000000000000000000000000000000000000000000090910463ffffffff169181019190915290565b6126286140a0565b612630614076565b61264185858563ffffffff612c8b16565b905061266f8382612658888863ffffffff61290a16565b6040805160208101909152600a8a015481526132a4565b95945050505050565b805173ffffffffffffffffffffffffffffffffffffffff16600090815260048301602090815260408083208285015184529091529020606090610fd09060010161340f565b6126c5614076565b600083815260018501602052604090206003015473ffffffffffffffffffffffffffffffffffffffff166126f7614076565b6040517f41976e0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906341976e09906127499087906004016154a0565b60206040518083038186803b15801561276157600080fd5b505afa158015612775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127999190810190614a1f565b805190915061266f9015157f53746f72616765000000000000000000000000000000000000000000000000007f50726963652063616e6e6f74206265207a65726f0000000000000000000000008861346b565b3390565b73ffffffffffffffffffffffffffffffffffffffff80821660008181526002602090815260408083205483526001909152902054600f546122ae9391909116909114907f496e76616c696420746f6b656e00000000000000000000000000000000000000612d96565b612861614089565b602083015183516fffffffffffffffffffffffffffffffff90911690156128cd576040805180820190915260018152602084810151908201906128c29084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61350916565b815250915050610aa2565b6040805180820190915260008152835160208201906128c29084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61350916565b612912614089565b506000818152600180840160209081526040928390208351808501909452909101546fffffffffffffffffffffffffffffffff8082168452700100000000000000000000000000000000909104169082015292915050565b612972614076565b60098401546000848152600186016020908152604091829020825191820190925260069091015481526129af9082906129aa9061359d565b6135d4565b90506129ea816129aa87600101600087815260200190815260200160002060060160405180602001604052908160008201548152505061359d565b604080516020810190915290815295945050505050565b612a09614089565b612a116140a0565b612a21848463ffffffff61259c16565b9050612a2b614089565b612a3b858563ffffffff61290a16565b90506000612a4f868663ffffffff6123c816565b9050612a59614089565b6040805180820182526001815290517f70a08231000000000000000000000000000000000000000000000000000000008152602082019073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190612abc9030906004016154a0565b60206040518083038186803b158015612ad457600080fd5b505afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b0c9190810190614a5b565b90529050612b18614089565b612b20614089565b612b2a85876135ed565b9092509050612b4f82612b43858463ffffffff61369516565b9063ffffffff61369516565b9998505050505050505050565b805173ffffffffffffffffffffffffffffffffffffffff1660009081526004929092016020908152604080842092820151845291905290205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff166000908152600791909101602052604090205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff8116612bfd5760405162461bcd60e51b81526004016109b59061558a565b600e5460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612c93614076565b612c9b614089565b612cab858563ffffffff61290a16565b9050612cb5614089565b612cbd614089565b612cc783866135ed565b91509150612cd3614076565b600087815260018901602052604090206004015473ffffffffffffffffffffffffffffffffffffffff1663e8177dcf612d128a8a63ffffffff6123c816565b846020015186602001516040518463ffffffff1660e01b8152600401612d3a939291906154c9565b60206040518083038186803b158015612d5257600080fd5b505afa158015612d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d8a9190810190614a1f565b98975050505050505050565b82612e2457612da4826136af565b7f3a20000000000000000000000000000000000000000000000000000000000000612dce836136af565b604051602001612de09392919061539e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262461bcd60e51b82526109b591600401615579565b505050565b612e31614186565b604080516000606082018181526080830190935290918291612e69565b612e566141a7565b815260200190600190039081612e4e5790505b508152602001612e7884613783565b8152600060209091015292915050565b815151612ed790157f43616368650000000000000000000000000000000000000000000000000000007f616c726561647920696e697469616c697a656400000000000000000000000000612d96565b612ee58260200151826137bd565b5060400180516001019052565b8060400151604051908082528060200260200182016040528015612f3057816020015b612f1d6141a7565b815260200190600190039081612f155790505b5081526000805b8260200151518110156130e757600083602001518281518110612f5657fe5b602002602001015190505b80156130cc576000612f72826137f3565b90506000612f8084836139ca565b90506000612f94888363ffffffff6123c816565b600083815260018a016020526040902054909150600160a01b900460ff161561304a576040805160a08101825283815273ffffffffffffffffffffffffffffffffffffffff8316602082015260019181019190915260608101612ffd8a8563ffffffff61290a16565b516fffffffffffffffffffffffffffffffff1681526020016130268a858563ffffffff6126bd16565b905287518051600189019890811061303a57fe5b60200260200101819052506130b8565b6040805160a08101825283815273ffffffffffffffffffffffffffffffffffffffff8316602082015260009181018290526060810191909152608081016130988a858563ffffffff6126bd16565b90528751805160018901989081106130ac57fe5b60200260200101819052505b6130c284846139d5565b9350505050612f61565b83604001518314156130de57506130e7565b50600101612f37565b506040820151825151612e2491808414917f53746f7261676500000000000000000000000000000000000000000000000000917f636163686520696e697469616c697a656420696d70726f7065726c7900000000916139de565b613149614076565b613151614076565b613159614076565b613161614076565b600061316c87613aa9565b905060005b8181101561329557613181614089565b6131a48a6131958b8563ffffffff613aae16565b518d919063ffffffff613b2a16565b90506131af81613b99565b156131ba575061328d565b60006131e56131cf8b8563ffffffff613aae16565b608001515160208401519063ffffffff613ba116565b90506131ef614076565b6131f7613bdb565b905089156132425761323f60018e0160006132188e8863ffffffff613aae16565b5181526020808201929092526040908101600020815192830190915260050154815261359d565b90505b82511561326b576132646132568383613bfd565b88519063ffffffff613c1616565b8752613289565b61328661327883836135d4565b87519063ffffffff613c1616565b86525b5050505b600101613171565b50919890975095505050505050565b6132ac6140a0565b6132b4614089565b6132bc614089565b6132c685886135ed565b9150915060006132d4613c3b565b9050600061330c6132fe8a6040015163ffffffff168463ffffffff16613c4b90919063ffffffff16565b89519063ffffffff613ba116565b9050600061331985613b99565b1561332657506000613358565b61333082886135d4565b9050846020015184602001511015613358576133558185602001518760200151613c8d565b90505b8181111561336257fe5b60408051606081019091528a5181906133ab906133a6906bffffffffffffffffffffffff1661339a8188670de0b6b3a7640000613c8d565b9063ffffffff613c1616565b613ca3565b6bffffffffffffffffffffffff908116825260208d8101519201916133e2916133a6911661339a8187670de0b6b3a7640000613c8d565b6bffffffffffffffffffffffff1681526020018463ffffffff16815250955050505050505b949350505050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561345f57602002820191906000526020600020905b81548152602001906001019080831161344b575b50505050509050919050565b8361350357613479836136af565b7f3a200000000000000000000000000000000000000000000000000000000000006134a3846136af565b7f203c0000000000000000000000000000000000000000000000000000000000006134cd85613d02565b604051612de09594939291907f3e00000000000000000000000000000000000000000000000000000000000000906020016153c6565b50505050565b6000831580613516575082155b1561352d57613526600083613e11565b9050610fd0565b600061353f858563ffffffff613ba116565b905061266f61356a600161339a600261355e888463ffffffff613c4b16565b9063ffffffff613e1116565b61357a838663ffffffff613e5316565b101561358757600061358a565b60015b60ff1661339a838663ffffffff613e1116565b6135a5614076565b6040805160208101909152825181906135cc90670de0b6b3a764000063ffffffff613c1616565b905292915050565b6000610fd0838360000151670de0b6b3a7640000613c8d565b6135f5614089565b6135fd614089565b613605614089565b5060408051808201909152600181526020858101516fffffffffffffffffffffffffffffffff1690820152613638614089565b50604080518082019091526000815285516fffffffffffffffffffffffffffffffff166020820152613668614089565b6136728387612859565b905061367c614089565b6136868388612859565b91989197509095505050505050565b61369d614089565b610fd0836136aa84613e95565b613ebc565b606080826040516020016136c39190615389565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801561376c5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811061372f57fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615613767576001018152905061098c565b6136f6565b505060408051600081526020810190915292915050565b606060016101008304016040519080825280602002602001820160405280156137b6578160200160208202803883390190505b5092915050565b815161010082049060ff8316906001821b908590849081106137db57fe5b60200260200101818151179150818152505050505050565b600060ff6fffffffffffffffffffffffffffffffff831615613836577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800161383e565b608083901c92505b67ffffffffffffffff831615613875577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00161387d565b604083901c92505b63ffffffff8316156138b0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016138b8565b602083901c92505b61ffff8316156138e9577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016138f1565b601083901c92505b60ff831615613921577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff801613929565b600883901c92505b600f831615613959577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01613961565b600483901c92505b6003831615613991577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01613999565b600283901c92505b6001831615610aa2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b610100919091020190565b6001901b900390565b84613aa2576139ec846136af565b7f3a20000000000000000000000000000000000000000000000000000000000000613a16856136af565b7f203c000000000000000000000000000000000000000000000000000000000000613a4086613d02565b7f2c20000000000000000000000000000000000000000000000000000000000000613a6a87613d02565b604051612de097969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001615424565b5050505050565b515190565b613ab66141a7565b825151613b0c90808410907f4361636865000000000000000000000000000000000000000000000000000000907f696e76616c696420696e646578000000000000000000000000000000000000009086906139de565b8251805183908110613b1a57fe5b6020026020010151905092915050565b613b32614089565b613b3a614089565b613b4b85858563ffffffff61251d16565b9050613b5681613f4e565b15613b6b57613b63613f68565b915050610fd0565b613b736140a0565b613b83868563ffffffff61259c16565b9050613b8f8282612859565b9695505050505050565b602001511590565b600082613bb057506000610aa2565b82820282848281613bbd57fe5b0414610fd05760405162461bcd60e51b81526004016109b5906155aa565b613be3614076565b506040805160208101909152670de0b6b3a7640000815290565b6000610fd083670de0b6b3a76400008460000151613c8d565b600082820183811015610fd05760405162461bcd60e51b81526004016109b59061559a565b6000613c4642613f88565b905090565b6000610fd083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613fdf565b60006134078261355e868663ffffffff613ba116565b600081610aa26bffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e74393600000000000000000000008461346b565b606081613d43575060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015261098c565b8160005b8115613d5b57600101600a82049150613d47565b6060816040519080825280601f01601f191660200182016040528015613d88576020820181803883390190505b508593509050815b8015613e08577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b828281518110613dce57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350613d90565b50949350505050565b6000610fd083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061400b565b6000610fd083836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614042565b613e9d614089565b5060408051808201909152815115815260208083015190820152919050565b613ec4614089565b613ecc614089565b8251845115159015151415613eff5783511515815260208085015190840151613ef59190613c16565b6020820152610fd0565b8260200151846020015110613f285783511515815260208085015190840151613ef59190613c4b565b82511515815260208084015190850151613f429190613c4b565b60208201529392505050565b602001516fffffffffffffffffffffffffffffffff161590565b613f70614089565b50604080518082019091526000808252602082015290565b600081610aa263ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e74333200000000000000000000008461346b565b600081848411156140035760405162461bcd60e51b81526004016109b59190615579565b505050900390565b6000818361402c5760405162461bcd60e51b81526004016109b59190615579565b50600083858161403857fe5b0495945050505050565b600081836140635760405162461bcd60e51b81526004016109b59190615579565b5082848161406d57fe5b06949350505050565b6040518060200160405280600081525090565b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b60405180608001604052806140d3614076565b81526020016140e0614076565b81526020016140ed614076565b81526020016140fa614076565b905290565b60408051610120810182526000808252602082018190529181019190915260608101614129614089565b81526020016141366140a0565b815260006020820181905260408201526060016140ed614076565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60405180606001604052806060815260200160608152602001600081525090565b6040518060a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160006fffffffffffffffffffffffffffffffff1681526020016140fa614076565b8035610aa281615aae565b600082601f83011261421c57600080fd5b813561422f61422a826158ba565b615893565b81815260209384019390925082018360005b8381101561426d57813586016142578882614451565b8452506020928301929190910190600101614241565b5050505092915050565b600082601f83011261428857600080fd5b813561429661422a826158ba565b915081818352602084019350602081019050838560408402820111156142bb57600080fd5b60005b8381101561426d57816142d1888261462a565b845250602090920191604091909101906001016142be565b600082601f8301126142fa57600080fd5b813561430861422a826158ba565b9150818183526020840193506020810190508385604084028201111561432d57600080fd5b60005b8381101561426d57816143438882614671565b84525060209092019160409190910190600101614330565b600082601f83011261436c57600080fd5b813561437a61422a826158ba565b9150818183526020840193506020810190508385602084028201111561439f57600080fd5b60005b8381101561426d57816143b5888261471c565b84525060209283019291909101906001016143a2565b8035610aa281615ac2565b600082601f8301126143e757600080fd5b81356143f561422a826158db565b9150808252602083016020830185838301111561441157600080fd5b61441c838284615a30565b50505092915050565b8035610aa281615acb565b8035610aa281615ad4565b8035610aa281615ae1565b8035610aa281615aee565b6000610160828403121561446457600080fd5b61446f610100615893565b9050600061447d8484614430565b825250602061448e8484830161471c565b60208301525060406144a28482850161452d565b60408301525060c06144b68482850161471c565b60608301525060e06144ca8482850161471c565b6080830152506101006144df84828501614200565b60a0830152506101206144f48482850161471c565b60c08301525061014082013567ffffffffffffffff81111561451557600080fd5b614521848285016143d6565b60e08301525092915050565b60006080828403121561453f57600080fd5b6145496080615893565b9050600061455784846143cb565b82525060206145688484830161443b565b602083015250604061457c8482850161443b565b60408301525060606145908482850161471c565b60608301525092915050565b6000602082840312156145ae57600080fd5b6145b86020615893565b905060006145c6848461471c565b82525092915050565b6000606082840312156145e157600080fd5b6145eb6060615893565b905060006145f9848461473d565b825250602061460a8484830161473d565b602083015250604061461e84828501614732565b60408301525092915050565b60006040828403121561463c57600080fd5b6146466040615893565b905060006146548484614200565b82525060206146658484830161471c565b60208301525092915050565b60006040828403121561468357600080fd5b61468d6040615893565b9050600061469b8484614200565b8252506020614665848483016143cb565b6000604082840312156146be57600080fd5b6146c86040615893565b905060006146d684846143cb565b825250602061466584848301614711565b6000602082840312156146f957600080fd5b6147036020615893565b905060006145c68484614727565b8035610aa281615afb565b8035610aa281615b04565b8051610aa281615b04565b8035610aa281615b0d565b8035610aa281615b16565b60006020828403121561475a57600080fd5b60006134078484614200565b6000806040838503121561477957600080fd5b60006147858585614200565b925050602061479685828601614200565b9150509250929050565b600080604083850312156147b357600080fd5b60006147bf8585614200565b9250506020614796858286016143cb565b600080600080600080600060e0888a0312156147eb57600080fd5b60006147f78a8a614200565b97505060206148088a828b01614425565b96505060406148198a828b01614425565b955050606061482a8a828b0161459c565b945050608061483b8a828b0161459c565b93505060a061484c8a828b016143cb565b92505060c061485d8a828b016143cb565b91505092959891949750929550565b6000806040838503121561487f57600080fd5b823567ffffffffffffffff81111561489657600080fd5b6148a285828601614277565b925050602083013567ffffffffffffffff8111156148bf57600080fd5b6147968582860161420b565b6000602082840312156148dd57600080fd5b813567ffffffffffffffff8111156148f457600080fd5b613407848285016142e9565b6000806040838503121561491357600080fd5b823567ffffffffffffffff81111561492a57600080fd5b6147858582860161435b565b60006020828403121561494857600080fd5b6000613407848461459c565b60006040828403121561496657600080fd5b6000613407848461462a565b6000806060838503121561498557600080fd5b6000614991858561462a565b925050604061479685828601614446565b600080606083850312156149b557600080fd5b60006149c1858561462a565b92505060406147968582860161471c565b600080600060a084860312156149e757600080fd5b60006149f3868661462a565b9350506040614a048682870161471c565b9250506060614a15868287016146ac565b9150509250925092565b600060208284031215614a3157600080fd5b600061340784846146e7565b600060208284031215614a4f57600080fd5b6000613407848461471c565b600060208284031215614a6d57600080fd5b60006134078484614727565b60008060408385031215614a8c57600080fd5b6000614785858561471c565b60008060408385031215614aab57600080fd5b60006147bf858561471c565b60008060408385031215614aca57600080fd5b6000614ad6858561471c565b925050602061479685828601614425565b60008060408385031215614afa57600080fd5b6000614b06858561471c565b92505060206147968582860161459c565b60008060808385031215614b2a57600080fd5b6000614b36858561471c565b9250506020614796858286016145cf565b60008060408385031215614b5a57600080fd5b6000614b66858561471c565b92505060206147968582860161471c565b6000614b838383614bcf565b505060200190565b6000610fd08383615051565b6000614ba38383615185565b505060400190565b6000614ba38383615258565b6000614ba3838361534b565b6000614b838383615365565b614bd881615934565b82525050565b6000614be982615927565b614bf3818561592b565b9350614bfe83615921565b8060005b83811015614c2c578151614c168882614b77565b9750614c2183615921565b925050600101614c02565b509495945050505050565b6000614c4282615927565b614c4c818561592b565b935083602082028501614c5e85615921565b8060005b85811015614c985784840389528151614c7b8582614b8b565b9450614c8683615921565b60209a909a0199925050600101614c62565b5091979650505050505050565b6000614cb082615927565b614cba818561592b565b9350614cc583615921565b8060005b83811015614c2c578151614cdd8882614b97565b9750614ce883615921565b925050600101614cc9565b6000614cfe82615927565b614d08818561592b565b9350614d1383615921565b8060005b83811015614c2c578151614d2b8882614bab565b9750614d3683615921565b925050600101614d17565b6000614d4c82615927565b614d56818561592b565b9350614d6183615921565b8060005b83811015614c2c578151614d798882614bb7565b9750614d8483615921565b925050600101614d65565b6000614d9a82615927565b614da4818561592b565b9350614daf83615921565b8060005b83811015614c2c578151614dc78882614bc3565b9750614dd283615921565b925050600101614db3565b6000614de882615927565b614df2818561592b565b9350614dfd83615921565b8060005b83811015614c2c578151614e158882614bc3565b9750614e2083615921565b925050600101614e01565b614bd88161593f565b614bd8614e4082615944565b61598e565b614bd8614e4082615969565b614bd8614e408261598e565b6000614e6882615927565b614e72818561098c565b9350614e82818560208601615a3c565b9290920192915050565b6000614e9782615927565b614ea1818561592b565b9350614eb1818560208601615a3c565b614eba81615a68565b9093019392505050565b614bd881615991565b614bd881615a0f565b614bd881615a1a565b614bd881615a25565b6000614ef560268361592b565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b6000614f54601b8361592b565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614f8d60218361592b565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000614fec60208361592b565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000615025601f8361592b565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b80516000906101608401906150668582614ecd565b5060208301516150796020860182615365565b50604083015161508c60408601826150f3565b50606083015161509f60c0860182615365565b5060808301516150b260e0860182615365565b5060a08301516150c6610100860182614bcf565b5060c08301516150da610120860182615365565b5060e083015184820361014086015261266f8282614e8c565b805160808301906151048482614e2b565b5060208201516151176020850182614ed6565b50604082015161512a6040850182614ed6565b5060608201516135036060850182615365565b805160208301906135038482615365565b8051606083019061515f8482615380565b5060208201516151726020850182615380565b506040820151613503604085018261536e565b805160408301906151968482614bcf565b5060208201516135036020850182615365565b80516101808301906151bb8482614bcf565b5060208201516151ce6020850182614e2b565b5060408201516151e16040850182614e2b565b5060608201516151f4606085018261533a565b50608082015161520760a085018261514e565b5060a082015161521b610100850182614ec4565b5060c082015161522f610120850182614ec4565b5060e082015161524361014085018261513d565b5061010082015161350361016085018261513d565b805160408301906152698482614e2b565b506020820151613503602085018261535c565b805160c083019061528d8482615377565b5060208201516152a06020850182615377565b5060408201516152b36040850182615377565b5060608201516152c66060850182615377565b5060808201516152d96080850182615377565b5060a082015161350360a085018261535c565b805160808301906152fd848261513d565b506020820151615310602085018261513d565b506040820151615323604085018261513d565b506060820151613503606085018261513d565b9052565b80516040830190615269848261535c565b805160408301906151968482614e2b565b614bd8816159ba565b614bd88161598e565b614bd8816159e8565b614bd8816159f1565b614bd8816159fe565b60006153958284614e51565b50602001919050565b60006153aa8286614e5d565b91506153b68285614e45565b60028201915061266f8284614e5d565b60006153d28289614e5d565b91506153de8288614e45565b6002820191506153ee8287614e5d565b91506153fa8286614e45565b60028201915061540a8285614e5d565b91506154168284614e34565b506001019695505050505050565b6000615430828b614e5d565b915061543c828a614e45565b60028201915061544c8289614e5d565b91506154588288614e45565b6002820191506154688287614e5d565b91506154748286614e45565b6002820191506154848285614e5d565b91506154908284614e34565b5060010198975050505050505050565b60208101610aa28284614bcf565b604081016154bc8285614bcf565b610fd06020830184614e2b565b606081016154d78286614bcf565b6154e46020830185615365565b6134076040830184615365565b60208082528101610fd08184614d8f565b608080825281016155138187614d8f565b905081810360208301526155278186614bde565b9050818103604083015261553b8185614cf3565b90508181036060830152613b8f8184614d41565b60208101610aa28284614e2b565b60208101610aa28284614ec4565b60208101610aa28284614edf565b60208082528101610fd08184614e8c565b60208082528101610aa281614ee8565b60208082528101610aa281614f47565b60208082528101610aa281614f80565b60208082528101610aa281614fdf565b60208082528101610aa281615018565b60208101610aa2828461513d565b60608101610aa2828461514e565b6101808101610aa282846151a9565b610220810161561482876151a9565b61562261018083018661514e565b6156306101e083018561513d565b61266f61020083018461513d565b60408101610aa28284615258565b60c08101610aa2828461527c565b60808101610aa282846152ec565b606081016156768286615336565b6156836020830185614bcf565b6134076040830184614bcf565b6060810161569e8286615336565b6156ab6020830185614bcf565b6134076040830184614e2b565b61010081016156c7828b615336565b6156d4602083018a614bcf565b6156e16040830189614ec4565b6156ee6060830188614ec4565b6156fb608083018761513d565b61570860a083018661513d565b61571560c0830185614e2b565b612b4f60e0830184614e2b565b606081016157308286615336565b81810360208301526157428185614ca5565b9050818103604083015261266f8184614c37565b606081016157648286615336565b81810360208301526157768185614ddd565b90506134076040830184614bcf565b604081016157938285615336565b610fd0602083018461513d565b60c081016157ae8287615336565b6157bb6020830186615185565b6157c86060830185615365565b61266f6080830184615258565b606081016157e38286615336565b6156836020830185615365565b606081016157fe8286615336565b6156ab6020830185615365565b606081016158198286615336565b6158266020830185615365565b6134076040830184614ec4565b606081016158418286615336565b61584e6020830185615365565b613407604083018461513d565b60408101610aa2828461533a565b60408101615793828561513d565b60408101610aa2828461534b565b60208101610aa28284615365565b60405181810167ffffffffffffffff811182821017156158b257600080fd5b604052919050565b600067ffffffffffffffff8211156158d157600080fd5b5060209081020190565b600067ffffffffffffffff8211156158f257600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b6000610aa2826159cf565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b6000610aa282615934565b8061098c81615a90565b8061098c81615a9a565b8061098c81615aa4565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b67ffffffffffffffff1690565b6bffffffffffffffffffffffff1690565b6000610aa28261599c565b6000610aa2826159a6565b6000610aa2826159b0565b82818337506000910152565b60005b83811015615a57578181015183820152602001615a3f565b838111156135035750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b600981106122ae57fe5b600281106122ae57fe5b600381106122ae57fe5b615ab781615934565b81146122ae57600080fd5b615ab78161593f565b615ab781615991565b600981106122ae57600080fd5b600281106122ae57600080fd5b600381106122ae57600080fd5b615ab7816159ba565b615ab78161598e565b615ab7816159e8565b615ab7816159fe56fea365627a7a72315820b36a4ceaf0d797bbd0e93e4d4761ddcab136d883aaf356d3c55ca6fd1b7ec4d26c6578706572696d656e74616cf564736f6c63430005100040",
2226
+ "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginRatio\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"liquidationSpread\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRate\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"minBorrowedValue\",\"type\":\"tuple\"}],\"internalType\":\"struct Storage.RiskParams\",\"name\":\"rp\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"marginRatioMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationSpreadMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"earningsRateMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"marginPremiumMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"spreadPremiumMax\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"minBorrowedValueMax\",\"type\":\"uint128\"}],\"internalType\":\"struct Storage.RiskLimits\",\"name\":\"rl\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"trusted\",\"type\":\"bool\"}],\"name\":\"LogOperatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountMarketsWithNonZeroBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getAccountPar\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getAccountParNoMarketCheck\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountStatus\",\"outputs\":[{\"internalType\":\"enum Account.Status\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountValues\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getAccountWei\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAdjustedAccountValues\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getEarningsRate\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"autoTrader\",\"type\":\"address\"}],\"name\":\"getIsAutoTraderSpecial\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getIsGlobalOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getIsLocalOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLiquidationSpread\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"heldMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedMarketId\",\"type\":\"uint256\"}],\"name\":\"getLiquidationSpreadForPair\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMarginRatio\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarket\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRecyclable\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"borrow\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"supply\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.TotalPar\",\"name\":\"totalPar\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint96\",\"name\":\"borrow\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"supply\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"index\",\"type\":\"tuple\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"priceOracle\",\"type\":\"address\"},{\"internalType\":\"contract IInterestSetter\",\"name\":\"interestSetter\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"spreadPremium\",\"type\":\"tuple\"}],\"internalType\":\"struct Storage.Market\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketCachedIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint96\",\"name\":\"borrow\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"supply\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketCurrentIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint96\",\"name\":\"borrow\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"supply\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getMarketIdByTokenAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketInterestRate\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Interest.Rate\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketInterestSetter\",\"outputs\":[{\"internalType\":\"contract IInterestSetter\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketIsClosing\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketIsRecyclable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketMarginPremium\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketPriceOracle\",\"outputs\":[{\"internalType\":\"contract IPriceOracle\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketSpreadPremium\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketTotalPar\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"borrow\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"supply\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.TotalPar\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketWithInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRecyclable\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"borrow\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"supply\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.TotalPar\",\"name\":\"totalPar\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint96\",\"name\":\"borrow\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"supply\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"index\",\"type\":\"tuple\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"priceOracle\",\"type\":\"address\"},{\"internalType\":\"contract IInterestSetter\",\"name\":\"interestSetter\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"spreadPremium\",\"type\":\"tuple\"}],\"internalType\":\"struct Storage.Market\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint96\",\"name\":\"borrow\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"supply\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Price\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Interest.Rate\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinBorrowedValue\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getNumExcessTokens\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumMarkets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getNumberOfMarketsWithBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getRecyclableMarkets\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRiskLimits\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"marginRatioMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationSpreadMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"earningsRateMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"marginPremiumMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"spreadPremiumMax\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"minBorrowedValueMax\",\"type\":\"uint128\"}],\"internalType\":\"struct Storage.RiskLimits\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRiskParams\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginRatio\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"liquidationSpread\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRate\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"minBorrowedValue\",\"type\":\"tuple\"}],\"internalType\":\"struct Storage.RiskParams\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info[]\",\"name\":\"accounts\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum Actions.ActionType\",\"name\":\"actionType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"accountId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"enum Types.AssetDenomination\",\"name\":\"denomination\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.AssetReference\",\"name\":\"ref\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.AssetAmount\",\"name\":\"amount\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"primaryMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryMarketId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"otherAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"otherAccountId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Actions.ActionArgs[]\",\"name\":\"actions\",\"type\":\"tuple[]\"}],\"name\":\"operate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"priceOracle\",\"type\":\"address\"},{\"internalType\":\"contract IInterestSetter\",\"name\":\"interestSetter\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"spreadPremium\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRecyclable\",\"type\":\"bool\"}],\"name\":\"ownerAddMarket\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"marketIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"salvager\",\"type\":\"address\"}],\"name\":\"ownerRemoveMarkets\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"autoTrader\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"special\",\"type\":\"bool\"}],\"name\":\"ownerSetAutoTraderSpecial\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRate\",\"type\":\"tuple\"}],\"name\":\"ownerSetEarningsRate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ownerSetGlobalOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"contract IInterestSetter\",\"name\":\"interestSetter\",\"type\":\"address\"}],\"name\":\"ownerSetInterestSetter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"}],\"name\":\"ownerSetIsClosing\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"spread\",\"type\":\"tuple\"}],\"name\":\"ownerSetLiquidationSpread\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"}],\"name\":\"ownerSetMarginPremium\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"ratio\",\"type\":\"tuple\"}],\"name\":\"ownerSetMarginRatio\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"minBorrowedValue\",\"type\":\"tuple\"}],\"name\":\"ownerSetMinBorrowedValue\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"priceOracle\",\"type\":\"address\"}],\"name\":\"ownerSetPriceOracle\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"spreadPremium\",\"type\":\"tuple\"}],\"name\":\"ownerSetSpreadPremium\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"ownerWithdrawExcessTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"ownerWithdrawUnsupportedTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"market\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"name\":\"setAccountBalance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"enum Account.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"setAccountStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"market\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint96\",\"name\":\"borrow\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"supply\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"index\",\"type\":\"tuple\"}],\"name\":\"setMarketIndex\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"trusted\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorArg[]\",\"name\":\"args\",\"type\":\"tuple[]\"}],\"name\":\"setOperators\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"operate((address,uint256)[],(uint8,uint256,(bool,uint8,uint8,uint256),uint256,uint256,address,uint256,bytes)[])\":{\"params\":{\"accounts\":\"A list of all accounts that will be used in this operation. Cannot contain duplicates. In each action, the relevant account will be referred-to by its index in the list.\",\"actions\":\"An ordered list of all actions that will be taken in this operation. The actions will be processed in order.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setOperators((address,bool)[])\":{\"params\":{\"args\":\"A list of OperatorArgs which have an address and a boolean. The boolean value denotes whether to approve (true) or revoke approval (false) for that address.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{\"operate((address,uint256)[],(uint8,uint256,(bool,uint8,uint8,uint256),uint256,uint256,address,uint256,bytes)[])\":{\"notice\":\"The main entry-point to DolomiteMargin that allows users and contracts to manage accounts. Take one or more actions on one or more accounts. The msg.sender must be the owner or operator of all accounts except for those being liquidated, vaporized, or traded with. One call to operate() is considered a singular \\\"operation\\\". Account collateralization is ensured only after the completion of the entire operation.\"},\"ownerAddMarket(address,address,address,(uint256),(uint256),bool,bool)\":{\"notice\":\"Add a new market to DolomiteMargin. Must be for a previously-unsupported ERC20 token.\"},\"ownerRemoveMarkets(uint256[],address)\":{\"notice\":\"Removes a market from DolomiteMargin, sends any remaining tokens in this contract to `salvager` and invokes the recyclable callback\"},\"ownerSetAutoTraderSpecial(address,bool)\":{\"notice\":\"Approve (or disapprove) an auto trader that can only be called by a global operator. IE for expirations\"},\"ownerSetEarningsRate((uint256))\":{\"notice\":\"Set the global earnings-rate variable that determines what percentage of the interest paid by borrowers gets passed-on to suppliers.\"},\"ownerSetGlobalOperator(address,bool)\":{\"notice\":\"Approve (or disapprove) an address that is permissioned to be an operator for all accounts in DolomiteMargin. Intended only to approve smart-contracts.\"},\"ownerSetInterestSetter(uint256,address)\":{\"notice\":\"Set the interest-setter for a market.\"},\"ownerSetIsClosing(uint256,bool)\":{\"notice\":\"Set (or unset) the status of a market to \\\"closing\\\". The borrowedValue of a market cannot increase while its status is \\\"closing\\\".\"},\"ownerSetLiquidationSpread((uint256))\":{\"notice\":\"Set the global liquidation spread. This is the spread between oracle prices that incentivizes the liquidation of risky positions.\"},\"ownerSetMarginPremium(uint256,(uint256))\":{\"notice\":\"Set a premium on the minimum margin-ratio for a market. This makes it so that any positions that include this market require a higher collateralization to avoid being liquidated.\"},\"ownerSetMarginRatio((uint256))\":{\"notice\":\"Set the global minimum margin-ratio that every position must maintain to prevent being liquidated.\"},\"ownerSetMinBorrowedValue((uint256))\":{\"notice\":\"Set the global minimum-borrow value which is the minimum value of any new borrow on DolomiteMargin.\"},\"ownerSetPriceOracle(uint256,address)\":{\"notice\":\"Set the price oracle for a market.\"},\"ownerSetSpreadPremium(uint256,(uint256))\":{\"notice\":\"Set a premium on the liquidation spread for a market. This makes it so that any liquidations that include this market have a higher spread than the global default.\"},\"ownerWithdrawExcessTokens(uint256,address)\":{\"notice\":\"Withdraw an ERC20 token for which there is an associated market. Only excess tokens can be withdrawn. The number of excess tokens is calculated by taking the current number of tokens held in DolomiteMargin, adding the number of tokens owed to DolomiteMargin by borrowers, and subtracting the number of tokens owed to suppliers by DolomiteMargin.\"},\"ownerWithdrawUnsupportedTokens(address,address)\":{\"notice\":\"Withdraw an ERC20 token for which there is no associated market.\"},\"setOperators((address,bool)[])\":{\"notice\":\"Approves/disapproves any number of operators. An operator is an external address that has the same permissions to manipulate an account as the owner of the account. Operators are simply addresses and therefore may either be externally-owned Ethereum accounts OR smart contracts. * Operators are also able to act as AutoTrader contracts on behalf of the account owner if the operator is a smart contract and implements the IAutoTrader interface.\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/testing/TestDolomiteMargin.sol\":\"TestDolomiteMargin\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/Admin.sol\":{\"keccak256\":\"0x49bd668fba504841be143e261d4f713f7bd618308608eb5c4f04369feb586b0e\",\"urls\":[\"bzz-raw://635f6f066cb5cffb94dae6b284d040d1f8bf2299bdbb2263188642123c1b965e\",\"dweb:/ipfs/QmPMqmH5PLwARm5Jy3gEhMdgcMKAoV4NjG41QLnWV6U9Ek\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/DolomiteMargin.sol\":{\"keccak256\":\"0xe603b63adf6d1eb3384977729db974e246679fa10135d6bf31bd08a0e6ee407c\",\"urls\":[\"bzz-raw://0e612713abbac4a3a8439eae7498388d88dad936993ceac078de07415a4f4cad\",\"dweb:/ipfs/QmdMApfMXX2bgLC5W9agH14hs6EA5A39u6A2ofQYmwMW8s\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/Getters.sol\":{\"keccak256\":\"0xfbaf01df86497dbfdfc6faeca28219aeab710c4df95f46f7d042568479e234ab\",\"urls\":[\"bzz-raw://376e23ff206d0d86a37f413e8b90e60cf1a11d64ca84bd2bf02049c326f50402\",\"dweb:/ipfs/QmaGK3dsRM6oTZqwezLDgva8qxLyuJsbbNCwVWn3QdBvdz\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/Operation.sol\":{\"keccak256\":\"0xaebae2196c8e39cb0965dc0d88979683d4b8d5a70a45259c5c88a2c9b21dc730\",\"urls\":[\"bzz-raw://66d81ffed219df67800129b079c3bb4b3246ff1e05f39a5157fb8a3681fe0351\",\"dweb:/ipfs/QmaBv43NeqUy5PJPYCtZuGL8H2L4P4B6zgTzZQPAADkK3D\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/Permission.sol\":{\"keccak256\":\"0x8a0f17ece121f76094335482d99a2ec6dd1728cc4b699aede024afd5d51ae660\",\"urls\":[\"bzz-raw://3ab2b049bb5686fafc6450c9796abac1c724a40ed0810685f64c4dab089faf5d\",\"dweb:/ipfs/QmV1XHkR2aS39byy4Ff6Px8JyHYjnZEugAJsBSz1gdQ47q\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/State.sol\":{\"keccak256\":\"0x4fe464f16c7f490dbe7f43e9672ddf1296852a4a652303a47a91bc7a3c72419b\",\"urls\":[\"bzz-raw://725237be55e03e728e268407c47704af1c93b1fddf277b5e6447d864b9f0bbfb\",\"dweb:/ipfs/QmNZfmH9XMXGdd21DMv2aNU4X152uDVUrpns64kZn1ryVn\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/impl/AdminImpl.sol\":{\"keccak256\":\"0xbcb580fd35399cf0b2e20cdeb3f2bb25ad791a16577a5e9842ebf3fd5b205f67\",\"urls\":[\"bzz-raw://a308759195b5d5d91a76b9509299a68f4d62dc2a363f2546b9f2d28fa8ba3ff0\",\"dweb:/ipfs/QmTgd11YSyCVaMHxQhheQTpvSY3M8123LjozpjaVDvBLx4\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/impl/LiquidateOrVaporizeImpl.sol\":{\"keccak256\":\"0xcc8da88b265e994c6e29c16de47d7f07ae772d8b35f25c95bfd7e9e56160efe0\",\"urls\":[\"bzz-raw://3d4f2e52ab9590093b7ae981e203d04b84b4fe670d6a6ff5a568645a92ea0e0d\",\"dweb:/ipfs/QmfFeAaG497cu6j2ykGV8guwUgwdYjUFXDwCjbLYNS2T58\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/impl/OperationImpl.sol\":{\"keccak256\":\"0x32e415843e918648c740cbffc591e04bd158ae06f911d60ed844ce30ad13e7f0\",\"urls\":[\"bzz-raw://cee2fd0c63854065d2504f87a12ea3bede82d25552520c8bb72b752a697754b1\",\"dweb:/ipfs/QmedgadJUphfSxAPrg1EPvJoAhBBxU1hK18xQ2QVocmDyX\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IAutoTrader.sol\":{\"keccak256\":\"0x62cbb936c4abdfc1ab33bb3ee5505279cc7354f9404bedf74ee3d099623a6dfa\",\"urls\":[\"bzz-raw://91ab2bd45600b1d3268a5592deb8b396d0fc4bba05a00d1aa4b4b785a6ee46ad\",\"dweb:/ipfs/QmVmBdFGFuA6XzaWxVAxxFDH81mhomg6uJvnYi4NYRHfDk\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/ICallee.sol\":{\"keccak256\":\"0x0b65209369307041e67c28634fc17a19e953199ac42a88198b76578f7fa9b0f8\",\"urls\":[\"bzz-raw://46618851882c2bc5a6212bb0a8ad095e0f38049f24ecf404163ad6b493c728a1\",\"dweb:/ipfs/QmRx4VabTaXTGSyMt8NCTZ7nMiWCHfrvqZjRaKNRir3zEe\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x1e73364879c267fdd2bfd871e62ee58ee3d65fbef3b71e3cc104fbff499eca6c\",\"urls\":[\"bzz-raw://e3b1327980a5949afd52cff4713f47ee4fdee9a8b376ceaa3402f5c9696b8c1b\",\"dweb:/ipfs/QmbhQzVEdaraPJizT5DTtk6CDzH3guHNipHW5T23uTtFkX\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IExchangeWrapper.sol\":{\"keccak256\":\"0xfca7f5635821bbc8ff21db6982471a5f20071365496b74a8202e59494d0f327f\",\"urls\":[\"bzz-raw://eb289cb96c83a3ff7fd72d9a646694d324ee955874ef61e986850459b5841d16\",\"dweb:/ipfs/QmeeiaqShMqWpttPJ3GuDwxFzmq235HMVG7vDnLWnCupaZ\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/ILiquidationCallback.sol\":{\"keccak256\":\"0xad98b922c02e36b8ce992097639f6ecd859b5dc97b62334e72fc97dc68a2adc7\",\"urls\":[\"bzz-raw://fd1a2c1f7b1fb114430bda41d963c61e1f5467cf45ca9a4e0b4c8e9f2dfff2c5\",\"dweb:/ipfs/QmWv82ML6nUfnWb1S5rPjKQc8ncZDY4tQkaGjBWczWCT2C\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IRecyclable.sol\":{\"keccak256\":\"0x68843eafdee387608bd2e757c91e90c5044fc3724ea3ad5042117ab4af49d639\",\"urls\":[\"bzz-raw://14b71da16f79b9b5356dfb8d9243a141bb87b209e30fc99c9278c9a01e62a1a0\",\"dweb:/ipfs/QmNhdGQbhSBSJ8dTqSuntaqA3ChhkKpwLuhDfS5UGQ461A\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x0ab9a3fabc89984dff748af63d4319ee134051de2d7fc560e34ebaac86198396\",\"urls\":[\"bzz-raw://ab67f499a8ef83dc7e7cf7176a0f66eced40fa228eda8dd2d47e066ab985cf42\",\"dweb:/ipfs/QmXRHbsEYxr2Qsfsj5psXGV5LaPZHuzLiEXzSQJ77WSE27\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x44ec62b766a88a2f65267991e76cab88711e733b826dc9e578cb6ad6b38b2445\",\"urls\":[\"bzz-raw://731a8d44e57c9dcd7fbdefc37a6b5889c0d06defb3bd66b921b2a7db0edf0103\",\"dweb:/ipfs/QmcVbXc9oi5DMxjPtsBF76oJzD6zVjm7RuXgJfP3Goqrrb\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x425bf5764368faca16cc30a64b79d9bbe01fd8150444b58a464971c32450bd85\",\"urls\":[\"bzz-raw://064baf3155da634c5c80cea70bba0dda7a33af934b34f75f596961b4ab9aeafe\",\"dweb:/ipfs/QmTUHXoi9L6CkERyfhFs1jhxU66u2sbc6XRR5cH4TeHEqL\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0x1e6ff383f285e311d07374edda353e14ac4f29201726b0062a2f046c1a2b482c\",\"urls\":[\"bzz-raw://fd11c5db01039bf2c95f3561b08d271b80b7b1cb9fd7f75da887f7609807c5a7\",\"dweb:/ipfs/QmcY6CugdEHaYUa8ZKSnUDhvtVuoLfpDscZcmC91koAn1t\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0x66990bbe3c58d0edf57d3f67ab5280e2a53958ce44f75c335c4c50542321bccb\",\"urls\":[\"bzz-raw://724cfdb5c99121aab5262679e46766a2883e344749870d7dbfa92d1617f68bf2\",\"dweb:/ipfs/QmYjAsS45f6UG2u3zuTks2HVfMYtyFCVMgUvD7Gt7XtU3R\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x9710b0ab43cc2d964d8722a0aabbedbf7e9d4756dcc0b4ab7c46c1ee68653042\",\"urls\":[\"bzz-raw://2405593d37f0f224bfca556f01634a9755bb0ed626f74dd15293106a8b4dd7d3\",\"dweb:/ipfs/QmTZ16S336jsoDnK5p3vAZRzimBkmdEJibncHVBJxBt469\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Events.sol\":{\"keccak256\":\"0x0c71c063b3a1b4e653d94c05f6fc49de43ccc28838e406faccb1c93f424995a8\",\"urls\":[\"bzz-raw://73268db2286565ecc242da93930780e8e4794015c8c0e58d336981ffdc6cfd3a\",\"dweb:/ipfs/QmRYzhuRtKXnTscERvYS9XzjqdQFBoJZoHwRAekHo6w6Zy\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/ExcessivelySafeCall.sol\":{\"keccak256\":\"0x44694441ccb1a3ec0328a4336680549e4dfb606616d022acfe3ed8c4359ba478\",\"urls\":[\"bzz-raw://948143d0061a02614f0e1a833e676b49d138dda5e098b14f14f3be9908f32d38\",\"dweb:/ipfs/QmbtgtpmjHY5ksTWa4h7E8wayjfjW5uun1Ek8ZRcLSYXMT\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Exchange.sol\":{\"keccak256\":\"0x793484b5aa923b4cb7c9671914e3d9f2d19bee6ee680424adaa97e3b9de930c4\",\"urls\":[\"bzz-raw://cebf09a8d36b303b0b92ee850ea2a802946ac43cb26d1da819f5ea74d6e5110f\",\"dweb:/ipfs/QmeQJZSaHmJskcgL3spQTvn6tYqE9Yo3vfbMTuhJenzhwf\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x73e75454568c5dfc3bdcf7dbf2ddce6ab8d3d317618bc1f1957f7667e15d3799\",\"urls\":[\"bzz-raw://7b1c8a9a79c8ffdbb0fa633f713ae3dfeac93b31d2b1639614ac32d473fb8250\",\"dweb:/ipfs/QmfARP93W2mgeVwD9Lkd3yVmbCLF2Mos7o8HJ1x6WYQmxZ\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Math.sol\":{\"keccak256\":\"0x0c0c913b6ccdb69063f9ec84879fcad20a1ee6f44402c9f5ec2b4f5b9f2fa16b\",\"urls\":[\"bzz-raw://89b32eefb57e5e63ad8c6e079ae7bf2d2c8622776cd45af0cf304e1cafd6e078\",\"dweb:/ipfs/Qmcj7yRnYuTgKC3ZqZqe8rynHGYVDS3UrFExcVGcqeaDHY\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0xe641662503ea29ca959e84674188c3e9deaaf64c5623fb9560a4301c521ca1d3\",\"urls\":[\"bzz-raw://b10a04c7d014b99eb792c8c774e203c846d070b30cf0b715325fc07838ed6a6d\",\"dweb:/ipfs/QmUqZWnbchfEY9jM647yQamHe4GzspfUeRQF9k2nn1Hixd\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/SafeLiquidationCallback.sol\":{\"keccak256\":\"0x8084c1137ea386da7b6b943d3469f102bb4a5f69c944fe32503cb034d47ea26e\",\"urls\":[\"bzz-raw://387f7373cd99c62049d7139852ceda52b611ccfe305d2a19c7366d1de81c9919\",\"dweb:/ipfs/QmVHnW1gZ9MwLxWxFhZJwjW86SDv89o22phCBx11jQGxdY\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0xf930fbde3ab43ec8f079dbad062453b502542f53b7eec670c8e86c7a2e47dd9a\",\"urls\":[\"bzz-raw://e1c402fc55471e8372be478e99f91c28373f096e31f0ef1d5072dfdb81541c29\",\"dweb:/ipfs/QmTc8WSfFCbxNQqNpq1vptUVFxteKQ8HWEhyXREyPZ2neu\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x233d6ebf965711bf980f4bb2e672fb1a11b4b879fd41c884b3c2b704417d0d0c\",\"urls\":[\"bzz-raw://6478ff81706d531f9438b96274a7b904abbbd9c631540c68c6a89c3accf27abf\",\"dweb:/ipfs/QmWe9vkz3qwVjrcbmcTL8wgkjLPsrEqxcqPJL9ujM8PPbp\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0xd7bcae9e3c570544fc946a00cc7695106a64c20bc130d0183612c0410a531d19\",\"urls\":[\"bzz-raw://0ff5ffd6abb9ed223a64128c131afd962bec07fb9867cb62593906b339c76920\",\"dweb:/ipfs/QmbTrJL4bekvBqqaw6wXnBhYzS9uAqULSWF2VzW4cdfsM5\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xab134538648a2e223a7fe61db03c14f687657a5d37147f93c9088f11735aa311\",\"urls\":[\"bzz-raw://79dc7d2b30576d2349b99267642ac8d5fb7939c920b8d8045379d3614238bdc3\",\"dweb:/ipfs/QmaQJYg1nirHoWSC6G38Cjsk9pZBzEaNrGXKqTsvAzbyES\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/testing/TestDolomiteMargin.sol\":{\"keccak256\":\"0xf70acde617765ea130b7bdf33294ada7b29eec696529003de1a6a7044d85d761\",\"urls\":[\"bzz-raw://b58125100d2446a3109cc612713bf41ac24d21deadbf14255320aa4e98c2cc22\",\"dweb:/ipfs/QmVPqZ1yGZhzp3MsU64w5SqiSfTZzkkZp85cLZq8NJfWav\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/testing/TestOperationImpl.sol\":{\"keccak256\":\"0x402c23b97d383f6b01720480cad64d36dbc5da8a216eed4a5bbe6e4688e201f6\",\"urls\":[\"bzz-raw://06bd34638734f6c944de81d059876d7f79d4e78896d8bf2c0f1f3d88a26c3f85\",\"dweb:/ipfs/QmTYRMPjQfRmHqGty16YB7b5avCHye8ZupmUZEg2KCSopm\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}",
2227
+ "bytecode": "0x6080604052664765747465727360c81b600f553480156200001f57600080fd5b5060405162005f4d38038062005f4d833981016040819052620000429162000329565b81816000620000596001600160e01b03620001a016565b600e80546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600e8054600160a01b60ff60a01b199091161790558151516008556020808301515160095560408084015151600a5560609384015151600b558251600c80549385015192850151958501516001600160401b03199485166001600160401b0393841617600160401b600160801b03191668010000000000000000948416850217600160801b600160c01b031916600160801b97841697909702969096176001600160c01b0316600160c01b96831696909602959095179094556080830151600d805460a09095015194909316941693909317600160401b600160c01b0319166001600160801b0390921690920217905550620003db9050565b3390565b600060208284031215620001b757600080fd5b620001c3602062000369565b90506000620001d384846200030f565b82525092915050565b600060c08284031215620001ef57600080fd5b620001fb60c062000369565b905060006200020b84846200031c565b82525060206200021e848483016200031c565b602083015250604062000234848285016200031c565b60408301525060606200024a848285016200031c565b606083015250608062000260848285016200031c565b60808301525060a06200027684828501620002fc565b60a08301525092915050565b6000608082840312156200029557600080fd5b620002a1608062000369565b90506000620002b18484620001a4565b8252506020620002c484848301620001a4565b6020830152506040620002da84828501620001a4565b6040830152506060620002f084828501620001a4565b60608301525092915050565b80516200030981620003ab565b92915050565b80516200030981620003c5565b80516200030981620003d0565b60008061014083850312156200033e57600080fd5b60006200034c858562000282565b92505060806200035f85828601620001dc565b9150509250929050565b6040518181016001600160401b03811182821017156200038857600080fd5b604052919050565b6001600160801b031690565b90565b6001600160401b031690565b620003b68162000390565b8114620003c257600080fd5b50565b620003b6816200039c565b620003b6816200039f565b615b6280620003eb6000396000f3fe608060405234801561001057600080fd5b50600436106103af5760003560e01c80638da5cb5b116101f4578063d5ecf7c51161011a578063ec6e3987116100ad578063f2fde38b1161007c578063f2fde38b14610870578063f941605214610883578063fd04b60614610896578063fd47eda6146108a9576103af565b8063ec6e398714610824578063ef6957d014610837578063f1061ba81461084a578063f2901ae21461085d576103af565b8063e5520228116100e9578063e5520228146107d4578063e8e72f75146107dc578063eb1c6e6b146107ef578063eb44fdd314610804576103af565b8063d5ecf7c51461077b578063d96e406d1461078e578063deec053d146107a1578063e51bfcb4146107b4576103af565b8063b548b89211610192578063c8e1882611610161578063c8e1882614610722578063cb04a34c14610735578063d24c48bc14610755578063d36cca9014610768576103af565b8063b548b892146106c4578063c0bb72b7146106e7578063c1460942146106fa578063c190c2ec14610702576103af565b80638fae3be1116101ce5780638fae3be11461067857806398d4611b1461068b578063a67a6a451461069e578063b42cbcd3146106b1576103af565b80638da5cb5b146106555780638f32d59b1461065d5780638f6bc65914610665576103af565b80633a031bf0116102d95780636979479511610277578063835666701161024657806383566670146106095780638439dd921461061c57806385b53fc81461062f5780638928378e14610642576103af565b806369794795146105c15780636a8194e7146105d6578063715018a6146105f95780637e9eaf4114610601576103af565b80634f3c1542116102b35780634f3c15421461057357806356ea84b21461057b5780635735a4301461059b5780635ac7d17c146105ae576103af565b80633a031bf01461052d57806347d1b53c146105405780634be8741414610560576103af565b8063197f0f05116103515780632e822af3116103205780632e822af3146104e15780633063bce2146104f457806334fd45f114610507578063387a498a1461051a576103af565b8063197f0f05146104865780631a7777bb14610499578063295c39a5146104b95780632a560845146104ce576103af565b8063062bd3e91161038d578063062bd3e914610412578063121fb72f14610432578063124f914c146104455780631336836414610466576103af565b80630339a0c4146103b4578063042069d6146103dd578063052f72d7146103f2575b600080fd5b6103c76103c2366004614a3d565b6108bc565b6040516103d491906154f1565b60405180910390f35b6103f06103eb366004614ae7565b610991565b005b610405610400366004614748565b610a90565b6040516103d4919061554f565b610425610420366004614a3d565b610aa8565b6040516103d491906154a0565b6103f0610440366004614ab7565b610ac4565b610458610453366004614954565b610b73565b6040516103d4929190615869565b610479610474366004614a3d565b610b97565b6040516103d4919061555d565b610479610494366004614a3d565b610bce565b6104ac6104a7366004614a3d565b610c05565b6040516103d491906155da565b6104c1610c3c565b6040516103d49190615885565b6104c16104dc366004614766565b610c42565b6103f06104ef366004614936565b610d5e565b6103f0610502366004614936565b610e51565b6104c1610515366004614954565b610efe565b6103f0610528366004614936565b610f10565b61040561053b366004614766565b610fbd565b61055361054e3660046149a2565b610fd7565b6040516103d4919061563e565b6103f061056e366004614ae7565b610ffa565b6104ac6110a9565b61058e610589366004614a3d565b6110c5565b6040516103d491906155e8565b6104056105a9366004614a3d565b6110fa565b6104056105bc366004614a3d565b611134565b6105c961115c565b6040516103d4919061565a565b6105e96105e4366004614954565b6111b8565b6040516103d49493929190615502565b6103f061136f565b6104ac611402565b6103f0610617366004614972565b61141e565b6103f061062a3660046147d0565b611490565b6103f061063d3660046148cb565b611595565b6104ac610650366004614a3d565b61167c565b6104256116b1565b6104056116cd565b6104c1610673366004614a79565b61170d565b6104c1610686366004614748565b6117be565b6103c7610699366004614954565b6117f2565b6103f06106ac36600461486c565b611805565b6103f06106bf366004614b17565b611890565b6106d76106d2366004614a3d565b611a35565b6040516103d49493929190615605565b6103f06106f5366004614936565b611a91565b6104ac611b3e565b6107156107103660046149a2565b611b5a565b6040516103d49190615877565b6105536107303660046149a2565b611b9a565b610748610743366004614a3d565b611ba2565b6040516103d4919061585b565b6104ac610763366004614b47565b611bc4565b6103f0610776366004614900565b611bf0565b610715610789366004614a3d565b611c9f565b6103f061079c3660046149d2565b611cc1565b61058e6107af366004614a3d565b611d56565b6107c76107c2366004614954565b611d78565b6040516103d4919061556b565b6104ac611d8a565b6103f06107ea366004614ab7565b611da6565b6107f7611e55565b6040516103d4919061564c565b610817610812366004614a3d565b611ef7565b6040516103d491906155f6565b6103f06108323660046147a0565b612062565b6103f0610845366004614a98565b612111565b610405610858366004614748565b6121c0565b6103f061086b3660046147a0565b6121d2565b6103f061087e366004614748565b612281565b610458610891366004614954565b6122b1565b6104ac6108a4366004614a3d565b6122cc565b6104ac6108b7366004614a3d565b612303565b606060008090506060836040519080825280602002602001820160405280156108ef578160200160208202803883390190505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60005260036020527fb1ee3b3d0d99532dd9f14b22c0b908d4eec0e052c3827bbed2d6c3986954d08c549091505b801580159061094d57508483105b15610987578082848060010195508151811061096557fe5b602090810291909101810191909152600091825260039052604090205461093f565b509150505b919050565b6109996116cd565b6109be5760405162461bcd60e51b81526004016109b5906155ba565b60405180910390fd5b600e54600160a01b900460ff166109e75760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f8854ab3e00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90638854ab3e90610a499060009086908690600401615833565b60006040518083038186803b158015610a6157600080fd5b505af4158015610a75573d6000803e3d6000fd5b5050600e805460ff60a01b1916600160a01b17905550505050565b6000610aa2818363ffffffff61233816565b92915050565b6000610ab382612367565b610aa260008363ffffffff6123c816565b610acc6116cd565b610ae85760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610b115760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517faa92e34800000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063aa92e34890610a49906000908690869060040161580b565b610b7b614076565b610b83614076565b610b8e8360006123f4565b91509150915091565b6000610ba282612367565b5060009081526001602052604090206003015473ffffffffffffffffffffffffffffffffffffffff1690565b6000610bd982612367565b5060009081526001602052604090206004015473ffffffffffffffffffffffffffffffffffffffff1690565b610c0d614076565b610c1682612367565b506000908152600160209081526040918290208251918201909252600690910154815290565b60005490565b6000610c4c6116cd565b610c685760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610c915760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fdd32998a00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063dd32998a90610cf39060009087908790600401615668565b60206040518083038186803b158015610d0b57600080fd5b505af4158015610d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d439190810190614a5b565b9050600e805460ff60a01b1916600160a01b17905592915050565b610d666116cd565b610d825760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610dab5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517ff9cacc4c00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063f9cacc4c90610e0b906000908590600401615785565b60006040518083038186803b158015610e2357600080fd5b505af4158015610e37573d6000803e3d6000fd5b5050600e805460ff60a01b1916600160a01b179055505050565b610e596116cd565b610e755760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610e9e5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f0f44e6bc00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90630f44e6bc90610e0b906000908590600401615785565b6000610aa2818363ffffffff61249916565b610f186116cd565b610f345760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610f5d5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f311401d000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063311401d090610e0b906000908590600401615785565b6000610fd081848463ffffffff6124e016565b9392505050565b610fdf614089565b610fe882612367565b610fd06000848463ffffffff61251d16565b6110026116cd565b61101e5760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff166110475760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f7335079b00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90637335079b90610a499060009086908690600401615833565b6110b1614076565b506040805160208101909152600854815290565b6110cd6140a0565b6110d682612367565b610aa2826110eb60008263ffffffff61259c16565b6000919063ffffffff61262016565b600061110582612367565b506000908152600160205260409020547501000000000000000000000000000000000000000000900460ff1690565b600061113f82612367565b50600090815260016020526040902054600160a01b900460ff1690565b6111646140c0565b506040805160a08101825260085460808201908152815281516020818101845260095482528083019190915282518082018452600a548152828401528251908101909252600b548252606081019190915290565b6060808080806111cf60008763ffffffff61267816565b9050606081516040519080825280602002602001820160405280156111fe578160200160208202803883390190505b5090506060825160405190808252806020026020018201604052801561123e57816020015b61122b614089565b8152602001906001900390816112235790505b5090506060835160405190808252806020026020018201604052801561127e57816020015b61126b614089565b8152602001906001900390816112635790505b50905060005b845181101561135f576112a985828151811061129c57fe5b6020026020010151610aa8565b8482815181106112b557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061130c8a8683815181106112ff57fe5b6020026020010151610fd7565b83828151811061131857fe5b60200260200101819052506113408a86838151811061133357fe5b6020026020010151611b5a565b82828151811061134c57fe5b6020908102919091010152600101611284565b5092989197509550909350915050565b6113776116cd565b6113935760405162461bcd60e51b81526004016109b5906155ba565b600e5460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b61140a614076565b506040805160208101909152600b54815290565b815173ffffffffffffffffffffffffffffffffffffffff166000908152600460209081526040808320828601518452909152902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561148757fe5b02179055505050565b6114986116cd565b6114b45760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff166114dd5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f4f32fb2700000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90634f32fb2790611549906000908b908b908b908b908b908b908b906004016156b8565b60006040518083038186803b15801561156157600080fd5b505af4158015611575573d6000803e3d6000fd5b5050600e805460ff60a01b1916600160a01b179055505050505050505050565b60005b81518110156116785760008282815181106115af57fe5b602002602001015160000151905060008383815181106115cb57fe5b60209081029190910181015181015133600081815260058452604080822073ffffffffffffffffffffffffffffffffffffffff8816835290945283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001683151517905591519092507f4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a63279061166690859085906154ae565b60405180910390a25050600101611598565b5050565b611684614076565b61168d82612367565b610aa2826116a260008263ffffffff6123c816565b6000919063ffffffff6126bd16565b600e5473ffffffffffffffffffffffffffffffffffffffff1690565b600e5460009073ffffffffffffffffffffffffffffffffffffffff166116f16127ec565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60006117176116cd565b6117335760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff1661175c5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fb25328e000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063b25328e090610cf390600090879087906004016157d5565b60006117c9826127f0565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b6060610aa260008363ffffffff61267816565b600e54600160a01b900460ff1661182e5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fbd76ecfd00000000000000000000000000000000000000000000000000000000815273__OperationImpl_________________________9063bd76ecfd90610a499060009086908690600401615722565b6118986140a0565b5060008281526001602090815260409182902082516060810184526002909101546bffffffffffffffffffffffff80821683526c0100000000000000000000000082048116938301939093527801000000000000000000000000000000000000000000000000900463ffffffff16928101929092528251166119275780516bffffffffffffffffffffffff1682525b60208201516bffffffffffffffffffffffff16611957576020808201516bffffffffffffffffffffffff16908301525b5060009182526001602090815260409283902082516002909101805492840151939094015163ffffffff167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff9485166c01000000000000000000000000027fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff959093167fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090941693909317939093161716179055565b611a3d6140ff565b611a456140a0565b611a4d614076565b611a55614076565b611a5e85612367565b611a6785611ef7565b611a70866110c5565b611a798761167c565b611a8288612303565b93509350935093509193509193565b611a996116cd565b611ab55760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16611ade5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f54dd351600000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906354dd351690610e0b906000908590600401615785565b611b46614076565b506040805160208101909152600954815290565b611b62614089565b611b6b82612367565b610fd0611b806000858563ffffffff61251d16565b611b95846110eb60008263ffffffff61259c16565b612859565b610fe8614089565b611baa614089565b611bb382612367565b610aa260008363ffffffff61290a16565b611bcc614076565b611bd583612367565b611bde82612367565b610fd06000848463ffffffff61296a16565b611bf86116cd565b611c145760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16611c3d5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fd963729100000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063d963729190610a499060009086908690600401615756565b611ca7614089565b611cb082612367565b610aa260008363ffffffff612a0116565b611cca82612367565b6040517f81379a5e00000000000000000000000000000000000000000000000000000000815273__TestOperationImpl_____________________906381379a5e90611d21906000908790879087906004016157a0565b60006040518083038186803b158015611d3957600080fd5b505af4158015611d4d573d6000803e3d6000fd5b50505050505050565b611d5e6140a0565b611d6782612367565b610aa260008363ffffffff61259c16565b6000610aa2818363ffffffff612b5c16565b611d92614076565b506040805160208101909152600a54815290565b611dae6116cd565b611dca5760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16611df35760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f8c5dabd100000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90638c5dabd190610a49906000908690869060040161580b565b611e5d614151565b506040805160c081018252600c5467ffffffffffffffff808216835268010000000000000000808304821660208501527001000000000000000000000000000000008304821694840194909452780100000000000000000000000000000000000000000000000090910481166060830152600d549081166080830152919091046fffffffffffffffffffffffffffffffff1660a082015290565b611eff6140ff565b611f0882612367565b50600090815260016020818152604092839020835161012081018552815473ffffffffffffffffffffffffffffffffffffffff8082168352600160a01b820460ff908116151584870152750100000000000000000000000000000000000000000090920490911615158287015285518087018752948301546fffffffffffffffffffffffffffffffff808216875270010000000000000000000000000000000090910416858501526060808301959095528551948501865260028301546bffffffffffffffffffffffff80821687526c01000000000000000000000000820416868601527801000000000000000000000000000000000000000000000000900463ffffffff168587015260808201949094526003820154841660a0820152600482015490931660c0840152835180830185526005820154815260e08401528351918201909352600690920154825261010081019190915290565b61206a6116cd565b6120865760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff166120af5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f3c0c9ddc00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90633c0c9ddc90610a499060009086908690600401615690565b6121196116cd565b6121355760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff1661215e5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f10c87b0600000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906310c87b0690610a4990600090869086906004016157f0565b6000610aa2818363ffffffff612b9b16565b6121da6116cd565b6121f65760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff1661221f5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fe80f802400000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063e80f802490610a499060009086908690600401615690565b6122896116cd565b6122a55760405162461bcd60e51b81526004016109b5906155ba565b6122ae81612bca565b50565b6122b9614076565b6122c1614076565b610b8e8360016123f4565b6122d4614076565b6122dd82612367565b506000908152600160209081526040918290208251918201909252600590910154815290565b61230b614076565b61231482612367565b610aa28261232960008263ffffffff61259c16565b6000919063ffffffff612c8b16565b73ffffffffffffffffffffffffffffffffffffffff166000908152600691909101602052604090205460ff1690565b6000546122ae908210801561239f575060008281526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b600f547f496e76616c6964206d61726b6574000000000000000000000000000000000000612d96565b6000908152600191909101602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6123fc614076565b612404614076565b606061241760008663ffffffff61267816565b9050612421614186565b61242b8251612e29565b905060005b82518110156124675761245f83828151811061244857fe5b602002602001015183612e8890919063ffffffff16565b600101612430565b5061247960008263ffffffff612ef216565b61248c600087838863ffffffff61314116565b9350935050509250929050565b805173ffffffffffffffffffffffffffffffffffffffff16600090815260049290920160209081526040808420928201518452919052902054610100900463ffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600593909301602090815260408085209290931684525290205460ff1690565b612525614089565b50815173ffffffffffffffffffffffffffffffffffffffff1660009081526004840160209081526040808320828601518452825280832084845260030182529182902082518084019093525460ff8116151583526fffffffffffffffffffffffffffffffff61010090910416908201529392505050565b6125a46140a0565b506000908152600191909101602090815260409182902082516060810184526002909101546bffffffffffffffffffffffff80821683526c0100000000000000000000000082041692820192909252780100000000000000000000000000000000000000000000000090910463ffffffff169181019190915290565b6126286140a0565b612630614076565b61264185858563ffffffff612c8b16565b905061266f8382612658888863ffffffff61290a16565b6040805160208101909152600a8a015481526132a4565b95945050505050565b805173ffffffffffffffffffffffffffffffffffffffff16600090815260048301602090815260408083208285015184529091529020606090610fd09060010161340f565b6126c5614076565b600083815260018501602052604090206003015473ffffffffffffffffffffffffffffffffffffffff166126f7614076565b6040517f41976e0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906341976e09906127499087906004016154a0565b60206040518083038186803b15801561276157600080fd5b505afa158015612775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127999190810190614a1f565b805190915061266f9015157f53746f72616765000000000000000000000000000000000000000000000000007f50726963652063616e6e6f74206265207a65726f0000000000000000000000008861346b565b3390565b73ffffffffffffffffffffffffffffffffffffffff80821660008181526002602090815260408083205483526001909152902054600f546122ae9391909116909114907f496e76616c696420746f6b656e00000000000000000000000000000000000000612d96565b612861614089565b602083015183516fffffffffffffffffffffffffffffffff90911690156128cd576040805180820190915260018152602084810151908201906128c29084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61350916565b815250915050610aa2565b6040805180820190915260008152835160208201906128c29084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61350916565b612912614089565b506000818152600180840160209081526040928390208351808501909452909101546fffffffffffffffffffffffffffffffff8082168452700100000000000000000000000000000000909104169082015292915050565b612972614076565b60098401546000848152600186016020908152604091829020825191820190925260069091015481526129af9082906129aa9061359d565b6135d4565b90506129ea816129aa87600101600087815260200190815260200160002060060160405180602001604052908160008201548152505061359d565b604080516020810190915290815295945050505050565b612a09614089565b612a116140a0565b612a21848463ffffffff61259c16565b9050612a2b614089565b612a3b858563ffffffff61290a16565b90506000612a4f868663ffffffff6123c816565b9050612a59614089565b6040805180820182526001815290517f70a08231000000000000000000000000000000000000000000000000000000008152602082019073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190612abc9030906004016154a0565b60206040518083038186803b158015612ad457600080fd5b505afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b0c9190810190614a5b565b90529050612b18614089565b612b20614089565b612b2a85876135ed565b9092509050612b4f82612b43858463ffffffff61369516565b9063ffffffff61369516565b9998505050505050505050565b805173ffffffffffffffffffffffffffffffffffffffff1660009081526004929092016020908152604080842092820151845291905290205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff166000908152600791909101602052604090205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff8116612bfd5760405162461bcd60e51b81526004016109b59061558a565b600e5460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612c93614076565b612c9b614089565b612cab858563ffffffff61290a16565b9050612cb5614089565b612cbd614089565b612cc783866135ed565b91509150612cd3614076565b600087815260018901602052604090206004015473ffffffffffffffffffffffffffffffffffffffff1663e8177dcf612d128a8a63ffffffff6123c816565b846020015186602001516040518463ffffffff1660e01b8152600401612d3a939291906154c9565b60206040518083038186803b158015612d5257600080fd5b505afa158015612d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d8a9190810190614a1f565b98975050505050505050565b82612e2457612da4826136af565b7f3a20000000000000000000000000000000000000000000000000000000000000612dce836136af565b604051602001612de09392919061539e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262461bcd60e51b82526109b591600401615579565b505050565b612e31614186565b604080516000606082018181526080830190935290918291612e69565b612e566141a7565b815260200190600190039081612e4e5790505b508152602001612e7884613783565b8152600060209091015292915050565b815151612ed790157f43616368650000000000000000000000000000000000000000000000000000007f616c726561647920696e697469616c697a656400000000000000000000000000612d96565b612ee58260200151826137bd565b5060400180516001019052565b8060400151604051908082528060200260200182016040528015612f3057816020015b612f1d6141a7565b815260200190600190039081612f155790505b5081526000805b8260200151518110156130e757600083602001518281518110612f5657fe5b602002602001015190505b80156130cc576000612f72826137f3565b90506000612f8084836139ca565b90506000612f94888363ffffffff6123c816565b600083815260018a016020526040902054909150600160a01b900460ff161561304a576040805160a08101825283815273ffffffffffffffffffffffffffffffffffffffff8316602082015260019181019190915260608101612ffd8a8563ffffffff61290a16565b516fffffffffffffffffffffffffffffffff1681526020016130268a858563ffffffff6126bd16565b905287518051600189019890811061303a57fe5b60200260200101819052506130b8565b6040805160a08101825283815273ffffffffffffffffffffffffffffffffffffffff8316602082015260009181018290526060810191909152608081016130988a858563ffffffff6126bd16565b90528751805160018901989081106130ac57fe5b60200260200101819052505b6130c284846139d5565b9350505050612f61565b83604001518314156130de57506130e7565b50600101612f37565b506040820151825151612e2491808414917f53746f7261676500000000000000000000000000000000000000000000000000917f636163686520696e697469616c697a656420696d70726f7065726c7900000000916139de565b613149614076565b613151614076565b613159614076565b613161614076565b600061316c87613aa9565b905060005b8181101561329557613181614089565b6131a48a6131958b8563ffffffff613aae16565b518d919063ffffffff613b2a16565b90506131af81613b99565b156131ba575061328d565b60006131e56131cf8b8563ffffffff613aae16565b608001515160208401519063ffffffff613ba116565b90506131ef614076565b6131f7613bdb565b905089156132425761323f60018e0160006132188e8863ffffffff613aae16565b5181526020808201929092526040908101600020815192830190915260050154815261359d565b90505b82511561326b576132646132568383613bfd565b88519063ffffffff613c1616565b8752613289565b61328661327883836135d4565b87519063ffffffff613c1616565b86525b5050505b600101613171565b50919890975095505050505050565b6132ac6140a0565b6132b4614089565b6132bc614089565b6132c685886135ed565b9150915060006132d4613c3b565b9050600061330c6132fe8a6040015163ffffffff168463ffffffff16613c4b90919063ffffffff16565b89519063ffffffff613ba116565b9050600061331985613b99565b1561332657506000613358565b61333082886135d4565b9050846020015184602001511015613358576133558185602001518760200151613c8d565b90505b8181111561336257fe5b60408051606081019091528a5181906133ab906133a6906bffffffffffffffffffffffff1661339a8188670de0b6b3a7640000613c8d565b9063ffffffff613c1616565b613ca3565b6bffffffffffffffffffffffff908116825260208d8101519201916133e2916133a6911661339a8187670de0b6b3a7640000613c8d565b6bffffffffffffffffffffffff1681526020018463ffffffff16815250955050505050505b949350505050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561345f57602002820191906000526020600020905b81548152602001906001019080831161344b575b50505050509050919050565b8361350357613479836136af565b7f3a200000000000000000000000000000000000000000000000000000000000006134a3846136af565b7f203c0000000000000000000000000000000000000000000000000000000000006134cd85613d02565b604051612de09594939291907f3e00000000000000000000000000000000000000000000000000000000000000906020016153c6565b50505050565b6000831580613516575082155b1561352d57613526600083613e11565b9050610fd0565b600061353f858563ffffffff613ba116565b905061266f61356a600161339a600261355e888463ffffffff613c4b16565b9063ffffffff613e1116565b61357a838663ffffffff613e5316565b101561358757600061358a565b60015b60ff1661339a838663ffffffff613e1116565b6135a5614076565b6040805160208101909152825181906135cc90670de0b6b3a764000063ffffffff613c1616565b905292915050565b6000610fd0838360000151670de0b6b3a7640000613c8d565b6135f5614089565b6135fd614089565b613605614089565b5060408051808201909152600181526020858101516fffffffffffffffffffffffffffffffff1690820152613638614089565b50604080518082019091526000815285516fffffffffffffffffffffffffffffffff166020820152613668614089565b6136728387612859565b905061367c614089565b6136868388612859565b91989197509095505050505050565b61369d614089565b610fd0836136aa84613e95565b613ebc565b606080826040516020016136c39190615389565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801561376c5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811061372f57fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615613767576001018152905061098c565b6136f6565b505060408051600081526020810190915292915050565b606060016101008304016040519080825280602002602001820160405280156137b6578160200160208202803883390190505b5092915050565b815161010082049060ff8316906001821b908590849081106137db57fe5b60200260200101818151179150818152505050505050565b600060ff6fffffffffffffffffffffffffffffffff831615613836577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800161383e565b608083901c92505b67ffffffffffffffff831615613875577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00161387d565b604083901c92505b63ffffffff8316156138b0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016138b8565b602083901c92505b61ffff8316156138e9577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016138f1565b601083901c92505b60ff831615613921577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff801613929565b600883901c92505b600f831615613959577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01613961565b600483901c92505b6003831615613991577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01613999565b600283901c92505b6001831615610aa2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b610100919091020190565b6001901b900390565b84613aa2576139ec846136af565b7f3a20000000000000000000000000000000000000000000000000000000000000613a16856136af565b7f203c000000000000000000000000000000000000000000000000000000000000613a4086613d02565b7f2c20000000000000000000000000000000000000000000000000000000000000613a6a87613d02565b604051612de097969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001615424565b5050505050565b515190565b613ab66141a7565b825151613b0c90808410907f4361636865000000000000000000000000000000000000000000000000000000907f696e76616c696420696e646578000000000000000000000000000000000000009086906139de565b8251805183908110613b1a57fe5b6020026020010151905092915050565b613b32614089565b613b3a614089565b613b4b85858563ffffffff61251d16565b9050613b5681613f4e565b15613b6b57613b63613f68565b915050610fd0565b613b736140a0565b613b83868563ffffffff61259c16565b9050613b8f8282612859565b9695505050505050565b602001511590565b600082613bb057506000610aa2565b82820282848281613bbd57fe5b0414610fd05760405162461bcd60e51b81526004016109b5906155aa565b613be3614076565b506040805160208101909152670de0b6b3a7640000815290565b6000610fd083670de0b6b3a76400008460000151613c8d565b600082820183811015610fd05760405162461bcd60e51b81526004016109b59061559a565b6000613c4642613f88565b905090565b6000610fd083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613fdf565b60006134078261355e868663ffffffff613ba116565b600081610aa26bffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e74393600000000000000000000008461346b565b606081613d43575060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015261098c565b8160005b8115613d5b57600101600a82049150613d47565b6060816040519080825280601f01601f191660200182016040528015613d88576020820181803883390190505b508593509050815b8015613e08577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b828281518110613dce57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350613d90565b50949350505050565b6000610fd083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061400b565b6000610fd083836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614042565b613e9d614089565b5060408051808201909152815115815260208083015190820152919050565b613ec4614089565b613ecc614089565b8251845115159015151415613eff5783511515815260208085015190840151613ef59190613c16565b6020820152610fd0565b8260200151846020015110613f285783511515815260208085015190840151613ef59190613c4b565b82511515815260208084015190850151613f429190613c4b565b60208201529392505050565b602001516fffffffffffffffffffffffffffffffff161590565b613f70614089565b50604080518082019091526000808252602082015290565b600081610aa263ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e74333200000000000000000000008461346b565b600081848411156140035760405162461bcd60e51b81526004016109b59190615579565b505050900390565b6000818361402c5760405162461bcd60e51b81526004016109b59190615579565b50600083858161403857fe5b0495945050505050565b600081836140635760405162461bcd60e51b81526004016109b59190615579565b5082848161406d57fe5b06949350505050565b6040518060200160405280600081525090565b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b60405180608001604052806140d3614076565b81526020016140e0614076565b81526020016140ed614076565b81526020016140fa614076565b905290565b60408051610120810182526000808252602082018190529181019190915260608101614129614089565b81526020016141366140a0565b815260006020820181905260408201526060016140ed614076565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60405180606001604052806060815260200160608152602001600081525090565b6040518060a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160006fffffffffffffffffffffffffffffffff1681526020016140fa614076565b8035610aa281615aae565b600082601f83011261421c57600080fd5b813561422f61422a826158ba565b615893565b81815260209384019390925082018360005b8381101561426d57813586016142578882614451565b8452506020928301929190910190600101614241565b5050505092915050565b600082601f83011261428857600080fd5b813561429661422a826158ba565b915081818352602084019350602081019050838560408402820111156142bb57600080fd5b60005b8381101561426d57816142d1888261462a565b845250602090920191604091909101906001016142be565b600082601f8301126142fa57600080fd5b813561430861422a826158ba565b9150818183526020840193506020810190508385604084028201111561432d57600080fd5b60005b8381101561426d57816143438882614671565b84525060209092019160409190910190600101614330565b600082601f83011261436c57600080fd5b813561437a61422a826158ba565b9150818183526020840193506020810190508385602084028201111561439f57600080fd5b60005b8381101561426d57816143b5888261471c565b84525060209283019291909101906001016143a2565b8035610aa281615ac2565b600082601f8301126143e757600080fd5b81356143f561422a826158db565b9150808252602083016020830185838301111561441157600080fd5b61441c838284615a30565b50505092915050565b8035610aa281615acb565b8035610aa281615ad4565b8035610aa281615ae1565b8035610aa281615aee565b6000610160828403121561446457600080fd5b61446f610100615893565b9050600061447d8484614430565b825250602061448e8484830161471c565b60208301525060406144a28482850161452d565b60408301525060c06144b68482850161471c565b60608301525060e06144ca8482850161471c565b6080830152506101006144df84828501614200565b60a0830152506101206144f48482850161471c565b60c08301525061014082013567ffffffffffffffff81111561451557600080fd5b614521848285016143d6565b60e08301525092915050565b60006080828403121561453f57600080fd5b6145496080615893565b9050600061455784846143cb565b82525060206145688484830161443b565b602083015250604061457c8482850161443b565b60408301525060606145908482850161471c565b60608301525092915050565b6000602082840312156145ae57600080fd5b6145b86020615893565b905060006145c6848461471c565b82525092915050565b6000606082840312156145e157600080fd5b6145eb6060615893565b905060006145f9848461473d565b825250602061460a8484830161473d565b602083015250604061461e84828501614732565b60408301525092915050565b60006040828403121561463c57600080fd5b6146466040615893565b905060006146548484614200565b82525060206146658484830161471c565b60208301525092915050565b60006040828403121561468357600080fd5b61468d6040615893565b9050600061469b8484614200565b8252506020614665848483016143cb565b6000604082840312156146be57600080fd5b6146c86040615893565b905060006146d684846143cb565b825250602061466584848301614711565b6000602082840312156146f957600080fd5b6147036020615893565b905060006145c68484614727565b8035610aa281615afb565b8035610aa281615b04565b8051610aa281615b04565b8035610aa281615b0d565b8035610aa281615b16565b60006020828403121561475a57600080fd5b60006134078484614200565b6000806040838503121561477957600080fd5b60006147858585614200565b925050602061479685828601614200565b9150509250929050565b600080604083850312156147b357600080fd5b60006147bf8585614200565b9250506020614796858286016143cb565b600080600080600080600060e0888a0312156147eb57600080fd5b60006147f78a8a614200565b97505060206148088a828b01614425565b96505060406148198a828b01614425565b955050606061482a8a828b0161459c565b945050608061483b8a828b0161459c565b93505060a061484c8a828b016143cb565b92505060c061485d8a828b016143cb565b91505092959891949750929550565b6000806040838503121561487f57600080fd5b823567ffffffffffffffff81111561489657600080fd5b6148a285828601614277565b925050602083013567ffffffffffffffff8111156148bf57600080fd5b6147968582860161420b565b6000602082840312156148dd57600080fd5b813567ffffffffffffffff8111156148f457600080fd5b613407848285016142e9565b6000806040838503121561491357600080fd5b823567ffffffffffffffff81111561492a57600080fd5b6147858582860161435b565b60006020828403121561494857600080fd5b6000613407848461459c565b60006040828403121561496657600080fd5b6000613407848461462a565b6000806060838503121561498557600080fd5b6000614991858561462a565b925050604061479685828601614446565b600080606083850312156149b557600080fd5b60006149c1858561462a565b92505060406147968582860161471c565b600080600060a084860312156149e757600080fd5b60006149f3868661462a565b9350506040614a048682870161471c565b9250506060614a15868287016146ac565b9150509250925092565b600060208284031215614a3157600080fd5b600061340784846146e7565b600060208284031215614a4f57600080fd5b6000613407848461471c565b600060208284031215614a6d57600080fd5b60006134078484614727565b60008060408385031215614a8c57600080fd5b6000614785858561471c565b60008060408385031215614aab57600080fd5b60006147bf858561471c565b60008060408385031215614aca57600080fd5b6000614ad6858561471c565b925050602061479685828601614425565b60008060408385031215614afa57600080fd5b6000614b06858561471c565b92505060206147968582860161459c565b60008060808385031215614b2a57600080fd5b6000614b36858561471c565b9250506020614796858286016145cf565b60008060408385031215614b5a57600080fd5b6000614b66858561471c565b92505060206147968582860161471c565b6000614b838383614bcf565b505060200190565b6000610fd08383615051565b6000614ba38383615185565b505060400190565b6000614ba38383615258565b6000614ba3838361534b565b6000614b838383615365565b614bd881615934565b82525050565b6000614be982615927565b614bf3818561592b565b9350614bfe83615921565b8060005b83811015614c2c578151614c168882614b77565b9750614c2183615921565b925050600101614c02565b509495945050505050565b6000614c4282615927565b614c4c818561592b565b935083602082028501614c5e85615921565b8060005b85811015614c985784840389528151614c7b8582614b8b565b9450614c8683615921565b60209a909a0199925050600101614c62565b5091979650505050505050565b6000614cb082615927565b614cba818561592b565b9350614cc583615921565b8060005b83811015614c2c578151614cdd8882614b97565b9750614ce883615921565b925050600101614cc9565b6000614cfe82615927565b614d08818561592b565b9350614d1383615921565b8060005b83811015614c2c578151614d2b8882614bab565b9750614d3683615921565b925050600101614d17565b6000614d4c82615927565b614d56818561592b565b9350614d6183615921565b8060005b83811015614c2c578151614d798882614bb7565b9750614d8483615921565b925050600101614d65565b6000614d9a82615927565b614da4818561592b565b9350614daf83615921565b8060005b83811015614c2c578151614dc78882614bc3565b9750614dd283615921565b925050600101614db3565b6000614de882615927565b614df2818561592b565b9350614dfd83615921565b8060005b83811015614c2c578151614e158882614bc3565b9750614e2083615921565b925050600101614e01565b614bd88161593f565b614bd8614e4082615944565b61598e565b614bd8614e4082615969565b614bd8614e408261598e565b6000614e6882615927565b614e72818561098c565b9350614e82818560208601615a3c565b9290920192915050565b6000614e9782615927565b614ea1818561592b565b9350614eb1818560208601615a3c565b614eba81615a68565b9093019392505050565b614bd881615991565b614bd881615a0f565b614bd881615a1a565b614bd881615a25565b6000614ef560268361592b565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b6000614f54601b8361592b565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614f8d60218361592b565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000614fec60208361592b565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000615025601f8361592b565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b80516000906101608401906150668582614ecd565b5060208301516150796020860182615365565b50604083015161508c60408601826150f3565b50606083015161509f60c0860182615365565b5060808301516150b260e0860182615365565b5060a08301516150c6610100860182614bcf565b5060c08301516150da610120860182615365565b5060e083015184820361014086015261266f8282614e8c565b805160808301906151048482614e2b565b5060208201516151176020850182614ed6565b50604082015161512a6040850182614ed6565b5060608201516135036060850182615365565b805160208301906135038482615365565b8051606083019061515f8482615380565b5060208201516151726020850182615380565b506040820151613503604085018261536e565b805160408301906151968482614bcf565b5060208201516135036020850182615365565b80516101808301906151bb8482614bcf565b5060208201516151ce6020850182614e2b565b5060408201516151e16040850182614e2b565b5060608201516151f4606085018261533a565b50608082015161520760a085018261514e565b5060a082015161521b610100850182614ec4565b5060c082015161522f610120850182614ec4565b5060e082015161524361014085018261513d565b5061010082015161350361016085018261513d565b805160408301906152698482614e2b565b506020820151613503602085018261535c565b805160c083019061528d8482615377565b5060208201516152a06020850182615377565b5060408201516152b36040850182615377565b5060608201516152c66060850182615377565b5060808201516152d96080850182615377565b5060a082015161350360a085018261535c565b805160808301906152fd848261513d565b506020820151615310602085018261513d565b506040820151615323604085018261513d565b506060820151613503606085018261513d565b9052565b80516040830190615269848261535c565b805160408301906151968482614e2b565b614bd8816159ba565b614bd88161598e565b614bd8816159e8565b614bd8816159f1565b614bd8816159fe565b60006153958284614e51565b50602001919050565b60006153aa8286614e5d565b91506153b68285614e45565b60028201915061266f8284614e5d565b60006153d28289614e5d565b91506153de8288614e45565b6002820191506153ee8287614e5d565b91506153fa8286614e45565b60028201915061540a8285614e5d565b91506154168284614e34565b506001019695505050505050565b6000615430828b614e5d565b915061543c828a614e45565b60028201915061544c8289614e5d565b91506154588288614e45565b6002820191506154688287614e5d565b91506154748286614e45565b6002820191506154848285614e5d565b91506154908284614e34565b5060010198975050505050505050565b60208101610aa28284614bcf565b604081016154bc8285614bcf565b610fd06020830184614e2b565b606081016154d78286614bcf565b6154e46020830185615365565b6134076040830184615365565b60208082528101610fd08184614d8f565b608080825281016155138187614d8f565b905081810360208301526155278186614bde565b9050818103604083015261553b8185614cf3565b90508181036060830152613b8f8184614d41565b60208101610aa28284614e2b565b60208101610aa28284614ec4565b60208101610aa28284614edf565b60208082528101610fd08184614e8c565b60208082528101610aa281614ee8565b60208082528101610aa281614f47565b60208082528101610aa281614f80565b60208082528101610aa281614fdf565b60208082528101610aa281615018565b60208101610aa2828461513d565b60608101610aa2828461514e565b6101808101610aa282846151a9565b610220810161561482876151a9565b61562261018083018661514e565b6156306101e083018561513d565b61266f61020083018461513d565b60408101610aa28284615258565b60c08101610aa2828461527c565b60808101610aa282846152ec565b606081016156768286615336565b6156836020830185614bcf565b6134076040830184614bcf565b6060810161569e8286615336565b6156ab6020830185614bcf565b6134076040830184614e2b565b61010081016156c7828b615336565b6156d4602083018a614bcf565b6156e16040830189614ec4565b6156ee6060830188614ec4565b6156fb608083018761513d565b61570860a083018661513d565b61571560c0830185614e2b565b612b4f60e0830184614e2b565b606081016157308286615336565b81810360208301526157428185614ca5565b9050818103604083015261266f8184614c37565b606081016157648286615336565b81810360208301526157768185614ddd565b90506134076040830184614bcf565b604081016157938285615336565b610fd0602083018461513d565b60c081016157ae8287615336565b6157bb6020830186615185565b6157c86060830185615365565b61266f6080830184615258565b606081016157e38286615336565b6156836020830185615365565b606081016157fe8286615336565b6156ab6020830185615365565b606081016158198286615336565b6158266020830185615365565b6134076040830184614ec4565b606081016158418286615336565b61584e6020830185615365565b613407604083018461513d565b60408101610aa2828461533a565b60408101615793828561513d565b60408101610aa2828461534b565b60208101610aa28284615365565b60405181810167ffffffffffffffff811182821017156158b257600080fd5b604052919050565b600067ffffffffffffffff8211156158d157600080fd5b5060209081020190565b600067ffffffffffffffff8211156158f257600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b6000610aa2826159cf565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b6000610aa282615934565b8061098c81615a90565b8061098c81615a9a565b8061098c81615aa4565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b67ffffffffffffffff1690565b6bffffffffffffffffffffffff1690565b6000610aa28261599c565b6000610aa2826159a6565b6000610aa2826159b0565b82818337506000910152565b60005b83811015615a57578181015183820152602001615a3f565b838111156135035750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b600981106122ae57fe5b600281106122ae57fe5b600381106122ae57fe5b615ab781615934565b81146122ae57600080fd5b615ab78161593f565b615ab781615991565b600981106122ae57600080fd5b600281106122ae57600080fd5b600381106122ae57600080fd5b615ab7816159ba565b615ab78161598e565b615ab7816159e8565b615ab7816159fe56fea365627a7a72315820ac26caa9d34fa501d14267e677a32c79f33fa84d919bcc2300f8927e18dbdce66c6578706572696d656e74616cf564736f6c63430005100040",
2228
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103af5760003560e01c80638da5cb5b116101f4578063d5ecf7c51161011a578063ec6e3987116100ad578063f2fde38b1161007c578063f2fde38b14610870578063f941605214610883578063fd04b60614610896578063fd47eda6146108a9576103af565b8063ec6e398714610824578063ef6957d014610837578063f1061ba81461084a578063f2901ae21461085d576103af565b8063e5520228116100e9578063e5520228146107d4578063e8e72f75146107dc578063eb1c6e6b146107ef578063eb44fdd314610804576103af565b8063d5ecf7c51461077b578063d96e406d1461078e578063deec053d146107a1578063e51bfcb4146107b4576103af565b8063b548b89211610192578063c8e1882611610161578063c8e1882614610722578063cb04a34c14610735578063d24c48bc14610755578063d36cca9014610768576103af565b8063b548b892146106c4578063c0bb72b7146106e7578063c1460942146106fa578063c190c2ec14610702576103af565b80638fae3be1116101ce5780638fae3be11461067857806398d4611b1461068b578063a67a6a451461069e578063b42cbcd3146106b1576103af565b80638da5cb5b146106555780638f32d59b1461065d5780638f6bc65914610665576103af565b80633a031bf0116102d95780636979479511610277578063835666701161024657806383566670146106095780638439dd921461061c57806385b53fc81461062f5780638928378e14610642576103af565b806369794795146105c15780636a8194e7146105d6578063715018a6146105f95780637e9eaf4114610601576103af565b80634f3c1542116102b35780634f3c15421461057357806356ea84b21461057b5780635735a4301461059b5780635ac7d17c146105ae576103af565b80633a031bf01461052d57806347d1b53c146105405780634be8741414610560576103af565b8063197f0f05116103515780632e822af3116103205780632e822af3146104e15780633063bce2146104f457806334fd45f114610507578063387a498a1461051a576103af565b8063197f0f05146104865780631a7777bb14610499578063295c39a5146104b95780632a560845146104ce576103af565b8063062bd3e91161038d578063062bd3e914610412578063121fb72f14610432578063124f914c146104455780631336836414610466576103af565b80630339a0c4146103b4578063042069d6146103dd578063052f72d7146103f2575b600080fd5b6103c76103c2366004614a3d565b6108bc565b6040516103d491906154f1565b60405180910390f35b6103f06103eb366004614ae7565b610991565b005b610405610400366004614748565b610a90565b6040516103d4919061554f565b610425610420366004614a3d565b610aa8565b6040516103d491906154a0565b6103f0610440366004614ab7565b610ac4565b610458610453366004614954565b610b73565b6040516103d4929190615869565b610479610474366004614a3d565b610b97565b6040516103d4919061555d565b610479610494366004614a3d565b610bce565b6104ac6104a7366004614a3d565b610c05565b6040516103d491906155da565b6104c1610c3c565b6040516103d49190615885565b6104c16104dc366004614766565b610c42565b6103f06104ef366004614936565b610d5e565b6103f0610502366004614936565b610e51565b6104c1610515366004614954565b610efe565b6103f0610528366004614936565b610f10565b61040561053b366004614766565b610fbd565b61055361054e3660046149a2565b610fd7565b6040516103d4919061563e565b6103f061056e366004614ae7565b610ffa565b6104ac6110a9565b61058e610589366004614a3d565b6110c5565b6040516103d491906155e8565b6104056105a9366004614a3d565b6110fa565b6104056105bc366004614a3d565b611134565b6105c961115c565b6040516103d4919061565a565b6105e96105e4366004614954565b6111b8565b6040516103d49493929190615502565b6103f061136f565b6104ac611402565b6103f0610617366004614972565b61141e565b6103f061062a3660046147d0565b611490565b6103f061063d3660046148cb565b611595565b6104ac610650366004614a3d565b61167c565b6104256116b1565b6104056116cd565b6104c1610673366004614a79565b61170d565b6104c1610686366004614748565b6117be565b6103c7610699366004614954565b6117f2565b6103f06106ac36600461486c565b611805565b6103f06106bf366004614b17565b611890565b6106d76106d2366004614a3d565b611a35565b6040516103d49493929190615605565b6103f06106f5366004614936565b611a91565b6104ac611b3e565b6107156107103660046149a2565b611b5a565b6040516103d49190615877565b6105536107303660046149a2565b611b9a565b610748610743366004614a3d565b611ba2565b6040516103d4919061585b565b6104ac610763366004614b47565b611bc4565b6103f0610776366004614900565b611bf0565b610715610789366004614a3d565b611c9f565b6103f061079c3660046149d2565b611cc1565b61058e6107af366004614a3d565b611d56565b6107c76107c2366004614954565b611d78565b6040516103d4919061556b565b6104ac611d8a565b6103f06107ea366004614ab7565b611da6565b6107f7611e55565b6040516103d4919061564c565b610817610812366004614a3d565b611ef7565b6040516103d491906155f6565b6103f06108323660046147a0565b612062565b6103f0610845366004614a98565b612111565b610405610858366004614748565b6121c0565b6103f061086b3660046147a0565b6121d2565b6103f061087e366004614748565b612281565b610458610891366004614954565b6122b1565b6104ac6108a4366004614a3d565b6122cc565b6104ac6108b7366004614a3d565b612303565b606060008090506060836040519080825280602002602001820160405280156108ef578160200160208202803883390190505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60005260036020527fb1ee3b3d0d99532dd9f14b22c0b908d4eec0e052c3827bbed2d6c3986954d08c549091505b801580159061094d57508483105b15610987578082848060010195508151811061096557fe5b602090810291909101810191909152600091825260039052604090205461093f565b509150505b919050565b6109996116cd565b6109be5760405162461bcd60e51b81526004016109b5906155ba565b60405180910390fd5b600e54600160a01b900460ff166109e75760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f8854ab3e00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90638854ab3e90610a499060009086908690600401615833565b60006040518083038186803b158015610a6157600080fd5b505af4158015610a75573d6000803e3d6000fd5b5050600e805460ff60a01b1916600160a01b17905550505050565b6000610aa2818363ffffffff61233816565b92915050565b6000610ab382612367565b610aa260008363ffffffff6123c816565b610acc6116cd565b610ae85760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610b115760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517faa92e34800000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063aa92e34890610a49906000908690869060040161580b565b610b7b614076565b610b83614076565b610b8e8360006123f4565b91509150915091565b6000610ba282612367565b5060009081526001602052604090206003015473ffffffffffffffffffffffffffffffffffffffff1690565b6000610bd982612367565b5060009081526001602052604090206004015473ffffffffffffffffffffffffffffffffffffffff1690565b610c0d614076565b610c1682612367565b506000908152600160209081526040918290208251918201909252600690910154815290565b60005490565b6000610c4c6116cd565b610c685760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610c915760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fdd32998a00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063dd32998a90610cf39060009087908790600401615668565b60206040518083038186803b158015610d0b57600080fd5b505af4158015610d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d439190810190614a5b565b9050600e805460ff60a01b1916600160a01b17905592915050565b610d666116cd565b610d825760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610dab5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517ff9cacc4c00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063f9cacc4c90610e0b906000908590600401615785565b60006040518083038186803b158015610e2357600080fd5b505af4158015610e37573d6000803e3d6000fd5b5050600e805460ff60a01b1916600160a01b179055505050565b610e596116cd565b610e755760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610e9e5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f0f44e6bc00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90630f44e6bc90610e0b906000908590600401615785565b6000610aa2818363ffffffff61249916565b610f186116cd565b610f345760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16610f5d5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f311401d000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063311401d090610e0b906000908590600401615785565b6000610fd081848463ffffffff6124e016565b9392505050565b610fdf614089565b610fe882612367565b610fd06000848463ffffffff61251d16565b6110026116cd565b61101e5760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff166110475760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f7335079b00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90637335079b90610a499060009086908690600401615833565b6110b1614076565b506040805160208101909152600854815290565b6110cd6140a0565b6110d682612367565b610aa2826110eb60008263ffffffff61259c16565b6000919063ffffffff61262016565b600061110582612367565b506000908152600160205260409020547501000000000000000000000000000000000000000000900460ff1690565b600061113f82612367565b50600090815260016020526040902054600160a01b900460ff1690565b6111646140c0565b506040805160a08101825260085460808201908152815281516020818101845260095482528083019190915282518082018452600a548152828401528251908101909252600b548252606081019190915290565b6060808080806111cf60008763ffffffff61267816565b9050606081516040519080825280602002602001820160405280156111fe578160200160208202803883390190505b5090506060825160405190808252806020026020018201604052801561123e57816020015b61122b614089565b8152602001906001900390816112235790505b5090506060835160405190808252806020026020018201604052801561127e57816020015b61126b614089565b8152602001906001900390816112635790505b50905060005b845181101561135f576112a985828151811061129c57fe5b6020026020010151610aa8565b8482815181106112b557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061130c8a8683815181106112ff57fe5b6020026020010151610fd7565b83828151811061131857fe5b60200260200101819052506113408a86838151811061133357fe5b6020026020010151611b5a565b82828151811061134c57fe5b6020908102919091010152600101611284565b5092989197509550909350915050565b6113776116cd565b6113935760405162461bcd60e51b81526004016109b5906155ba565b600e5460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b61140a614076565b506040805160208101909152600b54815290565b815173ffffffffffffffffffffffffffffffffffffffff166000908152600460209081526040808320828601518452909152902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561148757fe5b02179055505050565b6114986116cd565b6114b45760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff166114dd5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f4f32fb2700000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90634f32fb2790611549906000908b908b908b908b908b908b908b906004016156b8565b60006040518083038186803b15801561156157600080fd5b505af4158015611575573d6000803e3d6000fd5b5050600e805460ff60a01b1916600160a01b179055505050505050505050565b60005b81518110156116785760008282815181106115af57fe5b602002602001015160000151905060008383815181106115cb57fe5b60209081029190910181015181015133600081815260058452604080822073ffffffffffffffffffffffffffffffffffffffff8816835290945283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001683151517905591519092507f4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a63279061166690859085906154ae565b60405180910390a25050600101611598565b5050565b611684614076565b61168d82612367565b610aa2826116a260008263ffffffff6123c816565b6000919063ffffffff6126bd16565b600e5473ffffffffffffffffffffffffffffffffffffffff1690565b600e5460009073ffffffffffffffffffffffffffffffffffffffff166116f16127ec565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60006117176116cd565b6117335760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff1661175c5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fb25328e000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063b25328e090610cf390600090879087906004016157d5565b60006117c9826127f0565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b6060610aa260008363ffffffff61267816565b600e54600160a01b900460ff1661182e5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fbd76ecfd00000000000000000000000000000000000000000000000000000000815273__OperationImpl_________________________9063bd76ecfd90610a499060009086908690600401615722565b6118986140a0565b5060008281526001602090815260409182902082516060810184526002909101546bffffffffffffffffffffffff80821683526c0100000000000000000000000082048116938301939093527801000000000000000000000000000000000000000000000000900463ffffffff16928101929092528251166119275780516bffffffffffffffffffffffff1682525b60208201516bffffffffffffffffffffffff16611957576020808201516bffffffffffffffffffffffff16908301525b5060009182526001602090815260409283902082516002909101805492840151939094015163ffffffff167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff9485166c01000000000000000000000000027fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff959093167fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090941693909317939093161716179055565b611a3d6140ff565b611a456140a0565b611a4d614076565b611a55614076565b611a5e85612367565b611a6785611ef7565b611a70866110c5565b611a798761167c565b611a8288612303565b93509350935093509193509193565b611a996116cd565b611ab55760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16611ade5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f54dd351600000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906354dd351690610e0b906000908590600401615785565b611b46614076565b506040805160208101909152600954815290565b611b62614089565b611b6b82612367565b610fd0611b806000858563ffffffff61251d16565b611b95846110eb60008263ffffffff61259c16565b612859565b610fe8614089565b611baa614089565b611bb382612367565b610aa260008363ffffffff61290a16565b611bcc614076565b611bd583612367565b611bde82612367565b610fd06000848463ffffffff61296a16565b611bf86116cd565b611c145760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16611c3d5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fd963729100000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063d963729190610a499060009086908690600401615756565b611ca7614089565b611cb082612367565b610aa260008363ffffffff612a0116565b611cca82612367565b6040517f81379a5e00000000000000000000000000000000000000000000000000000000815273__TestOperationImpl_____________________906381379a5e90611d21906000908790879087906004016157a0565b60006040518083038186803b158015611d3957600080fd5b505af4158015611d4d573d6000803e3d6000fd5b50505050505050565b611d5e6140a0565b611d6782612367565b610aa260008363ffffffff61259c16565b6000610aa2818363ffffffff612b5c16565b611d92614076565b506040805160208101909152600a54815290565b611dae6116cd565b611dca5760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff16611df35760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f8c5dabd100000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90638c5dabd190610a49906000908690869060040161580b565b611e5d614151565b506040805160c081018252600c5467ffffffffffffffff808216835268010000000000000000808304821660208501527001000000000000000000000000000000008304821694840194909452780100000000000000000000000000000000000000000000000090910481166060830152600d549081166080830152919091046fffffffffffffffffffffffffffffffff1660a082015290565b611eff6140ff565b611f0882612367565b50600090815260016020818152604092839020835161012081018552815473ffffffffffffffffffffffffffffffffffffffff8082168352600160a01b820460ff908116151584870152750100000000000000000000000000000000000000000090920490911615158287015285518087018752948301546fffffffffffffffffffffffffffffffff808216875270010000000000000000000000000000000090910416858501526060808301959095528551948501865260028301546bffffffffffffffffffffffff80821687526c01000000000000000000000000820416868601527801000000000000000000000000000000000000000000000000900463ffffffff168587015260808201949094526003820154841660a0820152600482015490931660c0840152835180830185526005820154815260e08401528351918201909352600690920154825261010081019190915290565b61206a6116cd565b6120865760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff166120af5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f3c0c9ddc00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90633c0c9ddc90610a499060009086908690600401615690565b6121196116cd565b6121355760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff1661215e5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517f10c87b0600000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906310c87b0690610a4990600090869086906004016157f0565b6000610aa2818363ffffffff612b9b16565b6121da6116cd565b6121f65760405162461bcd60e51b81526004016109b5906155ba565b600e54600160a01b900460ff1661221f5760405162461bcd60e51b81526004016109b5906155ca565b600e805460ff60a01b191690556040517fe80f802400000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063e80f802490610a499060009086908690600401615690565b6122896116cd565b6122a55760405162461bcd60e51b81526004016109b5906155ba565b6122ae81612bca565b50565b6122b9614076565b6122c1614076565b610b8e8360016123f4565b6122d4614076565b6122dd82612367565b506000908152600160209081526040918290208251918201909252600590910154815290565b61230b614076565b61231482612367565b610aa28261232960008263ffffffff61259c16565b6000919063ffffffff612c8b16565b73ffffffffffffffffffffffffffffffffffffffff166000908152600691909101602052604090205460ff1690565b6000546122ae908210801561239f575060008281526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b600f547f496e76616c6964206d61726b6574000000000000000000000000000000000000612d96565b6000908152600191909101602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6123fc614076565b612404614076565b606061241760008663ffffffff61267816565b9050612421614186565b61242b8251612e29565b905060005b82518110156124675761245f83828151811061244857fe5b602002602001015183612e8890919063ffffffff16565b600101612430565b5061247960008263ffffffff612ef216565b61248c600087838863ffffffff61314116565b9350935050509250929050565b805173ffffffffffffffffffffffffffffffffffffffff16600090815260049290920160209081526040808420928201518452919052902054610100900463ffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600593909301602090815260408085209290931684525290205460ff1690565b612525614089565b50815173ffffffffffffffffffffffffffffffffffffffff1660009081526004840160209081526040808320828601518452825280832084845260030182529182902082518084019093525460ff8116151583526fffffffffffffffffffffffffffffffff61010090910416908201529392505050565b6125a46140a0565b506000908152600191909101602090815260409182902082516060810184526002909101546bffffffffffffffffffffffff80821683526c0100000000000000000000000082041692820192909252780100000000000000000000000000000000000000000000000090910463ffffffff169181019190915290565b6126286140a0565b612630614076565b61264185858563ffffffff612c8b16565b905061266f8382612658888863ffffffff61290a16565b6040805160208101909152600a8a015481526132a4565b95945050505050565b805173ffffffffffffffffffffffffffffffffffffffff16600090815260048301602090815260408083208285015184529091529020606090610fd09060010161340f565b6126c5614076565b600083815260018501602052604090206003015473ffffffffffffffffffffffffffffffffffffffff166126f7614076565b6040517f41976e0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906341976e09906127499087906004016154a0565b60206040518083038186803b15801561276157600080fd5b505afa158015612775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127999190810190614a1f565b805190915061266f9015157f53746f72616765000000000000000000000000000000000000000000000000007f50726963652063616e6e6f74206265207a65726f0000000000000000000000008861346b565b3390565b73ffffffffffffffffffffffffffffffffffffffff80821660008181526002602090815260408083205483526001909152902054600f546122ae9391909116909114907f496e76616c696420746f6b656e00000000000000000000000000000000000000612d96565b612861614089565b602083015183516fffffffffffffffffffffffffffffffff90911690156128cd576040805180820190915260018152602084810151908201906128c29084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61350916565b815250915050610aa2565b6040805180820190915260008152835160208201906128c29084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61350916565b612912614089565b506000818152600180840160209081526040928390208351808501909452909101546fffffffffffffffffffffffffffffffff8082168452700100000000000000000000000000000000909104169082015292915050565b612972614076565b60098401546000848152600186016020908152604091829020825191820190925260069091015481526129af9082906129aa9061359d565b6135d4565b90506129ea816129aa87600101600087815260200190815260200160002060060160405180602001604052908160008201548152505061359d565b604080516020810190915290815295945050505050565b612a09614089565b612a116140a0565b612a21848463ffffffff61259c16565b9050612a2b614089565b612a3b858563ffffffff61290a16565b90506000612a4f868663ffffffff6123c816565b9050612a59614089565b6040805180820182526001815290517f70a08231000000000000000000000000000000000000000000000000000000008152602082019073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190612abc9030906004016154a0565b60206040518083038186803b158015612ad457600080fd5b505afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b0c9190810190614a5b565b90529050612b18614089565b612b20614089565b612b2a85876135ed565b9092509050612b4f82612b43858463ffffffff61369516565b9063ffffffff61369516565b9998505050505050505050565b805173ffffffffffffffffffffffffffffffffffffffff1660009081526004929092016020908152604080842092820151845291905290205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff166000908152600791909101602052604090205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff8116612bfd5760405162461bcd60e51b81526004016109b59061558a565b600e5460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612c93614076565b612c9b614089565b612cab858563ffffffff61290a16565b9050612cb5614089565b612cbd614089565b612cc783866135ed565b91509150612cd3614076565b600087815260018901602052604090206004015473ffffffffffffffffffffffffffffffffffffffff1663e8177dcf612d128a8a63ffffffff6123c816565b846020015186602001516040518463ffffffff1660e01b8152600401612d3a939291906154c9565b60206040518083038186803b158015612d5257600080fd5b505afa158015612d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d8a9190810190614a1f565b98975050505050505050565b82612e2457612da4826136af565b7f3a20000000000000000000000000000000000000000000000000000000000000612dce836136af565b604051602001612de09392919061539e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262461bcd60e51b82526109b591600401615579565b505050565b612e31614186565b604080516000606082018181526080830190935290918291612e69565b612e566141a7565b815260200190600190039081612e4e5790505b508152602001612e7884613783565b8152600060209091015292915050565b815151612ed790157f43616368650000000000000000000000000000000000000000000000000000007f616c726561647920696e697469616c697a656400000000000000000000000000612d96565b612ee58260200151826137bd565b5060400180516001019052565b8060400151604051908082528060200260200182016040528015612f3057816020015b612f1d6141a7565b815260200190600190039081612f155790505b5081526000805b8260200151518110156130e757600083602001518281518110612f5657fe5b602002602001015190505b80156130cc576000612f72826137f3565b90506000612f8084836139ca565b90506000612f94888363ffffffff6123c816565b600083815260018a016020526040902054909150600160a01b900460ff161561304a576040805160a08101825283815273ffffffffffffffffffffffffffffffffffffffff8316602082015260019181019190915260608101612ffd8a8563ffffffff61290a16565b516fffffffffffffffffffffffffffffffff1681526020016130268a858563ffffffff6126bd16565b905287518051600189019890811061303a57fe5b60200260200101819052506130b8565b6040805160a08101825283815273ffffffffffffffffffffffffffffffffffffffff8316602082015260009181018290526060810191909152608081016130988a858563ffffffff6126bd16565b90528751805160018901989081106130ac57fe5b60200260200101819052505b6130c284846139d5565b9350505050612f61565b83604001518314156130de57506130e7565b50600101612f37565b506040820151825151612e2491808414917f53746f7261676500000000000000000000000000000000000000000000000000917f636163686520696e697469616c697a656420696d70726f7065726c7900000000916139de565b613149614076565b613151614076565b613159614076565b613161614076565b600061316c87613aa9565b905060005b8181101561329557613181614089565b6131a48a6131958b8563ffffffff613aae16565b518d919063ffffffff613b2a16565b90506131af81613b99565b156131ba575061328d565b60006131e56131cf8b8563ffffffff613aae16565b608001515160208401519063ffffffff613ba116565b90506131ef614076565b6131f7613bdb565b905089156132425761323f60018e0160006132188e8863ffffffff613aae16565b5181526020808201929092526040908101600020815192830190915260050154815261359d565b90505b82511561326b576132646132568383613bfd565b88519063ffffffff613c1616565b8752613289565b61328661327883836135d4565b87519063ffffffff613c1616565b86525b5050505b600101613171565b50919890975095505050505050565b6132ac6140a0565b6132b4614089565b6132bc614089565b6132c685886135ed565b9150915060006132d4613c3b565b9050600061330c6132fe8a6040015163ffffffff168463ffffffff16613c4b90919063ffffffff16565b89519063ffffffff613ba116565b9050600061331985613b99565b1561332657506000613358565b61333082886135d4565b9050846020015184602001511015613358576133558185602001518760200151613c8d565b90505b8181111561336257fe5b60408051606081019091528a5181906133ab906133a6906bffffffffffffffffffffffff1661339a8188670de0b6b3a7640000613c8d565b9063ffffffff613c1616565b613ca3565b6bffffffffffffffffffffffff908116825260208d8101519201916133e2916133a6911661339a8187670de0b6b3a7640000613c8d565b6bffffffffffffffffffffffff1681526020018463ffffffff16815250955050505050505b949350505050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561345f57602002820191906000526020600020905b81548152602001906001019080831161344b575b50505050509050919050565b8361350357613479836136af565b7f3a200000000000000000000000000000000000000000000000000000000000006134a3846136af565b7f203c0000000000000000000000000000000000000000000000000000000000006134cd85613d02565b604051612de09594939291907f3e00000000000000000000000000000000000000000000000000000000000000906020016153c6565b50505050565b6000831580613516575082155b1561352d57613526600083613e11565b9050610fd0565b600061353f858563ffffffff613ba116565b905061266f61356a600161339a600261355e888463ffffffff613c4b16565b9063ffffffff613e1116565b61357a838663ffffffff613e5316565b101561358757600061358a565b60015b60ff1661339a838663ffffffff613e1116565b6135a5614076565b6040805160208101909152825181906135cc90670de0b6b3a764000063ffffffff613c1616565b905292915050565b6000610fd0838360000151670de0b6b3a7640000613c8d565b6135f5614089565b6135fd614089565b613605614089565b5060408051808201909152600181526020858101516fffffffffffffffffffffffffffffffff1690820152613638614089565b50604080518082019091526000815285516fffffffffffffffffffffffffffffffff166020820152613668614089565b6136728387612859565b905061367c614089565b6136868388612859565b91989197509095505050505050565b61369d614089565b610fd0836136aa84613e95565b613ebc565b606080826040516020016136c39190615389565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801561376c5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811061372f57fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615613767576001018152905061098c565b6136f6565b505060408051600081526020810190915292915050565b606060016101008304016040519080825280602002602001820160405280156137b6578160200160208202803883390190505b5092915050565b815161010082049060ff8316906001821b908590849081106137db57fe5b60200260200101818151179150818152505050505050565b600060ff6fffffffffffffffffffffffffffffffff831615613836577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800161383e565b608083901c92505b67ffffffffffffffff831615613875577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00161387d565b604083901c92505b63ffffffff8316156138b0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016138b8565b602083901c92505b61ffff8316156138e9577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016138f1565b601083901c92505b60ff831615613921577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff801613929565b600883901c92505b600f831615613959577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01613961565b600483901c92505b6003831615613991577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01613999565b600283901c92505b6001831615610aa2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b610100919091020190565b6001901b900390565b84613aa2576139ec846136af565b7f3a20000000000000000000000000000000000000000000000000000000000000613a16856136af565b7f203c000000000000000000000000000000000000000000000000000000000000613a4086613d02565b7f2c20000000000000000000000000000000000000000000000000000000000000613a6a87613d02565b604051612de097969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001615424565b5050505050565b515190565b613ab66141a7565b825151613b0c90808410907f4361636865000000000000000000000000000000000000000000000000000000907f696e76616c696420696e646578000000000000000000000000000000000000009086906139de565b8251805183908110613b1a57fe5b6020026020010151905092915050565b613b32614089565b613b3a614089565b613b4b85858563ffffffff61251d16565b9050613b5681613f4e565b15613b6b57613b63613f68565b915050610fd0565b613b736140a0565b613b83868563ffffffff61259c16565b9050613b8f8282612859565b9695505050505050565b602001511590565b600082613bb057506000610aa2565b82820282848281613bbd57fe5b0414610fd05760405162461bcd60e51b81526004016109b5906155aa565b613be3614076565b506040805160208101909152670de0b6b3a7640000815290565b6000610fd083670de0b6b3a76400008460000151613c8d565b600082820183811015610fd05760405162461bcd60e51b81526004016109b59061559a565b6000613c4642613f88565b905090565b6000610fd083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613fdf565b60006134078261355e868663ffffffff613ba116565b600081610aa26bffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e74393600000000000000000000008461346b565b606081613d43575060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015261098c565b8160005b8115613d5b57600101600a82049150613d47565b6060816040519080825280601f01601f191660200182016040528015613d88576020820181803883390190505b508593509050815b8015613e08577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b828281518110613dce57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350613d90565b50949350505050565b6000610fd083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061400b565b6000610fd083836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614042565b613e9d614089565b5060408051808201909152815115815260208083015190820152919050565b613ec4614089565b613ecc614089565b8251845115159015151415613eff5783511515815260208085015190840151613ef59190613c16565b6020820152610fd0565b8260200151846020015110613f285783511515815260208085015190840151613ef59190613c4b565b82511515815260208084015190850151613f429190613c4b565b60208201529392505050565b602001516fffffffffffffffffffffffffffffffff161590565b613f70614089565b50604080518082019091526000808252602082015290565b600081610aa263ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e74333200000000000000000000008461346b565b600081848411156140035760405162461bcd60e51b81526004016109b59190615579565b505050900390565b6000818361402c5760405162461bcd60e51b81526004016109b59190615579565b50600083858161403857fe5b0495945050505050565b600081836140635760405162461bcd60e51b81526004016109b59190615579565b5082848161406d57fe5b06949350505050565b6040518060200160405280600081525090565b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b60405180608001604052806140d3614076565b81526020016140e0614076565b81526020016140ed614076565b81526020016140fa614076565b905290565b60408051610120810182526000808252602082018190529181019190915260608101614129614089565b81526020016141366140a0565b815260006020820181905260408201526060016140ed614076565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60405180606001604052806060815260200160608152602001600081525090565b6040518060a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160006fffffffffffffffffffffffffffffffff1681526020016140fa614076565b8035610aa281615aae565b600082601f83011261421c57600080fd5b813561422f61422a826158ba565b615893565b81815260209384019390925082018360005b8381101561426d57813586016142578882614451565b8452506020928301929190910190600101614241565b5050505092915050565b600082601f83011261428857600080fd5b813561429661422a826158ba565b915081818352602084019350602081019050838560408402820111156142bb57600080fd5b60005b8381101561426d57816142d1888261462a565b845250602090920191604091909101906001016142be565b600082601f8301126142fa57600080fd5b813561430861422a826158ba565b9150818183526020840193506020810190508385604084028201111561432d57600080fd5b60005b8381101561426d57816143438882614671565b84525060209092019160409190910190600101614330565b600082601f83011261436c57600080fd5b813561437a61422a826158ba565b9150818183526020840193506020810190508385602084028201111561439f57600080fd5b60005b8381101561426d57816143b5888261471c565b84525060209283019291909101906001016143a2565b8035610aa281615ac2565b600082601f8301126143e757600080fd5b81356143f561422a826158db565b9150808252602083016020830185838301111561441157600080fd5b61441c838284615a30565b50505092915050565b8035610aa281615acb565b8035610aa281615ad4565b8035610aa281615ae1565b8035610aa281615aee565b6000610160828403121561446457600080fd5b61446f610100615893565b9050600061447d8484614430565b825250602061448e8484830161471c565b60208301525060406144a28482850161452d565b60408301525060c06144b68482850161471c565b60608301525060e06144ca8482850161471c565b6080830152506101006144df84828501614200565b60a0830152506101206144f48482850161471c565b60c08301525061014082013567ffffffffffffffff81111561451557600080fd5b614521848285016143d6565b60e08301525092915050565b60006080828403121561453f57600080fd5b6145496080615893565b9050600061455784846143cb565b82525060206145688484830161443b565b602083015250604061457c8482850161443b565b60408301525060606145908482850161471c565b60608301525092915050565b6000602082840312156145ae57600080fd5b6145b86020615893565b905060006145c6848461471c565b82525092915050565b6000606082840312156145e157600080fd5b6145eb6060615893565b905060006145f9848461473d565b825250602061460a8484830161473d565b602083015250604061461e84828501614732565b60408301525092915050565b60006040828403121561463c57600080fd5b6146466040615893565b905060006146548484614200565b82525060206146658484830161471c565b60208301525092915050565b60006040828403121561468357600080fd5b61468d6040615893565b9050600061469b8484614200565b8252506020614665848483016143cb565b6000604082840312156146be57600080fd5b6146c86040615893565b905060006146d684846143cb565b825250602061466584848301614711565b6000602082840312156146f957600080fd5b6147036020615893565b905060006145c68484614727565b8035610aa281615afb565b8035610aa281615b04565b8051610aa281615b04565b8035610aa281615b0d565b8035610aa281615b16565b60006020828403121561475a57600080fd5b60006134078484614200565b6000806040838503121561477957600080fd5b60006147858585614200565b925050602061479685828601614200565b9150509250929050565b600080604083850312156147b357600080fd5b60006147bf8585614200565b9250506020614796858286016143cb565b600080600080600080600060e0888a0312156147eb57600080fd5b60006147f78a8a614200565b97505060206148088a828b01614425565b96505060406148198a828b01614425565b955050606061482a8a828b0161459c565b945050608061483b8a828b0161459c565b93505060a061484c8a828b016143cb565b92505060c061485d8a828b016143cb565b91505092959891949750929550565b6000806040838503121561487f57600080fd5b823567ffffffffffffffff81111561489657600080fd5b6148a285828601614277565b925050602083013567ffffffffffffffff8111156148bf57600080fd5b6147968582860161420b565b6000602082840312156148dd57600080fd5b813567ffffffffffffffff8111156148f457600080fd5b613407848285016142e9565b6000806040838503121561491357600080fd5b823567ffffffffffffffff81111561492a57600080fd5b6147858582860161435b565b60006020828403121561494857600080fd5b6000613407848461459c565b60006040828403121561496657600080fd5b6000613407848461462a565b6000806060838503121561498557600080fd5b6000614991858561462a565b925050604061479685828601614446565b600080606083850312156149b557600080fd5b60006149c1858561462a565b92505060406147968582860161471c565b600080600060a084860312156149e757600080fd5b60006149f3868661462a565b9350506040614a048682870161471c565b9250506060614a15868287016146ac565b9150509250925092565b600060208284031215614a3157600080fd5b600061340784846146e7565b600060208284031215614a4f57600080fd5b6000613407848461471c565b600060208284031215614a6d57600080fd5b60006134078484614727565b60008060408385031215614a8c57600080fd5b6000614785858561471c565b60008060408385031215614aab57600080fd5b60006147bf858561471c565b60008060408385031215614aca57600080fd5b6000614ad6858561471c565b925050602061479685828601614425565b60008060408385031215614afa57600080fd5b6000614b06858561471c565b92505060206147968582860161459c565b60008060808385031215614b2a57600080fd5b6000614b36858561471c565b9250506020614796858286016145cf565b60008060408385031215614b5a57600080fd5b6000614b66858561471c565b92505060206147968582860161471c565b6000614b838383614bcf565b505060200190565b6000610fd08383615051565b6000614ba38383615185565b505060400190565b6000614ba38383615258565b6000614ba3838361534b565b6000614b838383615365565b614bd881615934565b82525050565b6000614be982615927565b614bf3818561592b565b9350614bfe83615921565b8060005b83811015614c2c578151614c168882614b77565b9750614c2183615921565b925050600101614c02565b509495945050505050565b6000614c4282615927565b614c4c818561592b565b935083602082028501614c5e85615921565b8060005b85811015614c985784840389528151614c7b8582614b8b565b9450614c8683615921565b60209a909a0199925050600101614c62565b5091979650505050505050565b6000614cb082615927565b614cba818561592b565b9350614cc583615921565b8060005b83811015614c2c578151614cdd8882614b97565b9750614ce883615921565b925050600101614cc9565b6000614cfe82615927565b614d08818561592b565b9350614d1383615921565b8060005b83811015614c2c578151614d2b8882614bab565b9750614d3683615921565b925050600101614d17565b6000614d4c82615927565b614d56818561592b565b9350614d6183615921565b8060005b83811015614c2c578151614d798882614bb7565b9750614d8483615921565b925050600101614d65565b6000614d9a82615927565b614da4818561592b565b9350614daf83615921565b8060005b83811015614c2c578151614dc78882614bc3565b9750614dd283615921565b925050600101614db3565b6000614de882615927565b614df2818561592b565b9350614dfd83615921565b8060005b83811015614c2c578151614e158882614bc3565b9750614e2083615921565b925050600101614e01565b614bd88161593f565b614bd8614e4082615944565b61598e565b614bd8614e4082615969565b614bd8614e408261598e565b6000614e6882615927565b614e72818561098c565b9350614e82818560208601615a3c565b9290920192915050565b6000614e9782615927565b614ea1818561592b565b9350614eb1818560208601615a3c565b614eba81615a68565b9093019392505050565b614bd881615991565b614bd881615a0f565b614bd881615a1a565b614bd881615a25565b6000614ef560268361592b565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b6000614f54601b8361592b565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614f8d60218361592b565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000614fec60208361592b565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000615025601f8361592b565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b80516000906101608401906150668582614ecd565b5060208301516150796020860182615365565b50604083015161508c60408601826150f3565b50606083015161509f60c0860182615365565b5060808301516150b260e0860182615365565b5060a08301516150c6610100860182614bcf565b5060c08301516150da610120860182615365565b5060e083015184820361014086015261266f8282614e8c565b805160808301906151048482614e2b565b5060208201516151176020850182614ed6565b50604082015161512a6040850182614ed6565b5060608201516135036060850182615365565b805160208301906135038482615365565b8051606083019061515f8482615380565b5060208201516151726020850182615380565b506040820151613503604085018261536e565b805160408301906151968482614bcf565b5060208201516135036020850182615365565b80516101808301906151bb8482614bcf565b5060208201516151ce6020850182614e2b565b5060408201516151e16040850182614e2b565b5060608201516151f4606085018261533a565b50608082015161520760a085018261514e565b5060a082015161521b610100850182614ec4565b5060c082015161522f610120850182614ec4565b5060e082015161524361014085018261513d565b5061010082015161350361016085018261513d565b805160408301906152698482614e2b565b506020820151613503602085018261535c565b805160c083019061528d8482615377565b5060208201516152a06020850182615377565b5060408201516152b36040850182615377565b5060608201516152c66060850182615377565b5060808201516152d96080850182615377565b5060a082015161350360a085018261535c565b805160808301906152fd848261513d565b506020820151615310602085018261513d565b506040820151615323604085018261513d565b506060820151613503606085018261513d565b9052565b80516040830190615269848261535c565b805160408301906151968482614e2b565b614bd8816159ba565b614bd88161598e565b614bd8816159e8565b614bd8816159f1565b614bd8816159fe565b60006153958284614e51565b50602001919050565b60006153aa8286614e5d565b91506153b68285614e45565b60028201915061266f8284614e5d565b60006153d28289614e5d565b91506153de8288614e45565b6002820191506153ee8287614e5d565b91506153fa8286614e45565b60028201915061540a8285614e5d565b91506154168284614e34565b506001019695505050505050565b6000615430828b614e5d565b915061543c828a614e45565b60028201915061544c8289614e5d565b91506154588288614e45565b6002820191506154688287614e5d565b91506154748286614e45565b6002820191506154848285614e5d565b91506154908284614e34565b5060010198975050505050505050565b60208101610aa28284614bcf565b604081016154bc8285614bcf565b610fd06020830184614e2b565b606081016154d78286614bcf565b6154e46020830185615365565b6134076040830184615365565b60208082528101610fd08184614d8f565b608080825281016155138187614d8f565b905081810360208301526155278186614bde565b9050818103604083015261553b8185614cf3565b90508181036060830152613b8f8184614d41565b60208101610aa28284614e2b565b60208101610aa28284614ec4565b60208101610aa28284614edf565b60208082528101610fd08184614e8c565b60208082528101610aa281614ee8565b60208082528101610aa281614f47565b60208082528101610aa281614f80565b60208082528101610aa281614fdf565b60208082528101610aa281615018565b60208101610aa2828461513d565b60608101610aa2828461514e565b6101808101610aa282846151a9565b610220810161561482876151a9565b61562261018083018661514e565b6156306101e083018561513d565b61266f61020083018461513d565b60408101610aa28284615258565b60c08101610aa2828461527c565b60808101610aa282846152ec565b606081016156768286615336565b6156836020830185614bcf565b6134076040830184614bcf565b6060810161569e8286615336565b6156ab6020830185614bcf565b6134076040830184614e2b565b61010081016156c7828b615336565b6156d4602083018a614bcf565b6156e16040830189614ec4565b6156ee6060830188614ec4565b6156fb608083018761513d565b61570860a083018661513d565b61571560c0830185614e2b565b612b4f60e0830184614e2b565b606081016157308286615336565b81810360208301526157428185614ca5565b9050818103604083015261266f8184614c37565b606081016157648286615336565b81810360208301526157768185614ddd565b90506134076040830184614bcf565b604081016157938285615336565b610fd0602083018461513d565b60c081016157ae8287615336565b6157bb6020830186615185565b6157c86060830185615365565b61266f6080830184615258565b606081016157e38286615336565b6156836020830185615365565b606081016157fe8286615336565b6156ab6020830185615365565b606081016158198286615336565b6158266020830185615365565b6134076040830184614ec4565b606081016158418286615336565b61584e6020830185615365565b613407604083018461513d565b60408101610aa2828461533a565b60408101615793828561513d565b60408101610aa2828461534b565b60208101610aa28284615365565b60405181810167ffffffffffffffff811182821017156158b257600080fd5b604052919050565b600067ffffffffffffffff8211156158d157600080fd5b5060209081020190565b600067ffffffffffffffff8211156158f257600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b6000610aa2826159cf565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b6000610aa282615934565b8061098c81615a90565b8061098c81615a9a565b8061098c81615aa4565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b67ffffffffffffffff1690565b6bffffffffffffffffffffffff1690565b6000610aa28261599c565b6000610aa2826159a6565b6000610aa2826159b0565b82818337506000910152565b60005b83811015615a57578181015183820152602001615a3f565b838111156135035750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b600981106122ae57fe5b600281106122ae57fe5b600381106122ae57fe5b615ab781615934565b81146122ae57600080fd5b615ab78161593f565b615ab781615991565b600981106122ae57600080fd5b600281106122ae57600080fd5b600381106122ae57600080fd5b615ab7816159ba565b615ab78161598e565b615ab7816159e8565b615ab7816159fe56fea365627a7a72315820ac26caa9d34fa501d14267e677a32c79f33fa84d919bcc2300f8927e18dbdce66c6578706572696d656e74616cf564736f6c63430005100040",
2229
2229
  "sourceMap": "1008:1187:93:-;;;-1:-1:-1;;;1652:24:49;;1107:147:93;8:9:-1;5:2;;;30:1;27;20:12;5:2;1107:147:93;;;;;;;;;;;;;;;;;;;;;1240:2;1244;698:17:125;718:12;-1:-1:-1;;;;;718:10:125;:12;:::i;:::-;740:6;:18;;-1:-1:-1;;;;;;740:18:125;-1:-1:-1;;;;;740:18:125;;;;;;;;773:43;;740:18;;-1:-1:-1;740:18:125;-1:-1:-1;;773:43:125;;-1:-1:-1;;773:43:125;-1:-1:-1;1421:11:129;:18;;-1:-1:-1;;;;;;;1421:18:129;;;;;;1392:31:48;;;:18;:31;;;;;;;;;;;;;;;;;;;;;;;;;1433;;:18;:31;;;;;;;;;;;;;;-1:-1:-1;;;;;;1433:31:48;;;-1:-1:-1;;;;;1433:31:48;;;;-1:-1:-1;;;;;;;;1433:31:48;;;;;;;;-1:-1:-1;;;;;;;;1433:31:48;-1:-1:-1;;;1433:31:48;;;;;;;;;;;-1:-1:-1;;;;;1433:31:48;-1:-1:-1;;;1433:31:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1433:31:48;-1:-1:-1;;;;;1433:31:48;;;;;;;;;-1:-1:-1;1008:1187:93;;-1:-1:-1;1008:1187:93;788:96:122;867:10;788:96;:::o;31:340:-1:-;;150:4;138:9;133:3;129:19;125:30;122:2;;;168:1;165;158:12;122:2;186:20;201:4;186:20;;;177:29;-1:-1;257:1;289:60;345:3;325:9;289:60;;;264:86;;-1:-1;275:5;116:255;-1:-1;;116:255;410:1197;;539:4;527:9;522:3;518:19;514:30;511:2;;;557:1;554;547:12;511:2;575:20;590:4;575:20;;;566:29;-1:-1;655:1;687:59;742:3;722:9;687:59;;;662:85;;-1:-1;824:2;857:59;912:3;888:22;;;857:59;;;850:4;843:5;839:16;832:85;768:160;989:2;1022:59;1077:3;1068:6;1057:9;1053:22;1022:59;;;1015:4;1008:5;1004:16;997:85;938:155;1155:2;1188:59;1243:3;1234:6;1223:9;1219:22;1188:59;;;1181:4;1174:5;1170:16;1163:85;1103:156;1321:3;1355:59;1410:3;1401:6;1390:9;1386:22;1355:59;;;1348:4;1341:5;1337:16;1330:85;1269:157;1491:3;1525:60;1581:3;1572:6;1561:9;1557:22;1525:60;;;1518:4;1511:5;1507:16;1500:86;1436:161;505:1102;;;;;1646:931;;1775:4;1763:9;1758:3;1754:19;1750:30;1747:2;;;1793:1;1790;1783:12;1747:2;1811:20;1826:4;1811:20;;;1802:29;-1:-1;1888:1;1920:79;1995:3;1975:9;1920:79;;;1895:105;;-1:-1;2074:2;2107:79;2182:3;2158:22;;;2107:79;;;2100:4;2093:5;2089:16;2082:105;2021:177;2256:2;2289:79;2364:3;2355:6;2344:9;2340:22;2289:79;;;2282:4;2275:5;2271:16;2264:105;2208:172;2442:2;2475:80;2551:3;2542:6;2531:9;2527:22;2475:80;;;2468:4;2461:5;2457:16;2450:106;2390:177;1741:836;;;;;2960:134;3038:13;;3056:33;3038:13;3056:33;;;3023:71;;;;;3101:134;3179:13;;3197:33;3179:13;3197:33;;3242:132;3319:13;;3337:32;3319:13;3337:32;;3381:517;;;3571:3;3559:9;3550:7;3546:23;3542:33;3539:2;;;3588:1;3585;3578:12;3539:2;3623:1;3640:93;3725:7;3705:9;3640:93;;;3630:103;;3602:137;3770:3;3789:93;3874:7;3865:6;3854:9;3850:22;3789:93;;;3779:103;;3749:139;3533:365;;;;;;3905:256;3967:2;3961:9;3993:17;;;-1:-1;;;;;4053:34;;4089:22;;;4050:62;4047:2;;;4125:1;4122;4115:12;4047:2;4141;4134:22;3945:216;;-1:-1;3945:216;4168:113;-1:-1;;;;;4230:46;;4213:68;4288:72;4350:5;4333:27;4367:96;-1:-1;;;;;4428:30;;4411:52;4470:117;4539:24;4557:5;4539:24;;;4532:5;4529:35;4519:2;;4578:1;4575;4568:12;4519:2;4513:74;;4594:117;4663:24;4681:5;4663:24;;4718:115;4786:23;4803:5;4786:23;;4760:73;1008:1187:93;;;;;;",
2230
2230
  "deployedSourceMap": "1008:1187:93:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1008:1187:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5420:471:49;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;5587:292:47;;;;;;;;;:::i;:::-;;10872:174:49;;;;;;;;;:::i;:::-;;;;;;;;2867:210;;;;;;;;;:::i;:::-;;;;;;;;4588:292:47;;;;;;;;;:::i;9248:256:49:-;;;;;;;;;:::i;:::-;;;;;;;;;4021:225;;;;;;;;;:::i;:::-;;;;;;;;4252:234;;;;;;;;;:::i;4734:236::-;;;;;;;;;:::i;:::-;;;;;;;;2736:125;;;:::i;:::-;;;;;;;;2262:317:47;;;;;;;;;:::i;7222:258::-;;;;;;;;;:::i;6446:238::-;;;;;;;;;:::i;9034:208:49:-;;;;;;;;;:::i;6853:240:47:-;;;;;;;;;:::i;10664:202:49:-;;;;;;;;;:::i;7748:255::-;;;;;;;;;:::i;:::-;;;;;;;;5095:292:47;;;;;;;;;:::i;1734:150:49:-;;;:::i;3758:257::-;;;;;;;;;:::i;:::-;;;;;;;;5195:219;;;;;;;;;:::i;4976:213::-;;;;;;;;;:::i;2384:143::-;;;:::i;:::-;;;;;;;;9779:879;;;;;;;;;:::i;:::-;;;;;;;;;;;1684:137:125;;;:::i;2216:162:49:-;;;:::i;1576:199:93:-;;;;;;;;;:::i;2745:569:47:-;;;;;;;;;:::i;1806:377:51:-;;;;;;;;;:::i;5897:247:49:-;;;;;;;;;:::i;899:77:125:-;;;:::i;1250:92::-;;;:::i;1855:313:47:-;;;;;;;;;:::i;3083:211:49:-;;;;;;;;;:::i;8809:219::-;;;;;;;;;:::i;2066:260:50:-;;;;;;;;;:::i;1781:412:93:-;;;;;;;;;:::i;7019:491:49:-;;;;;;;;;:::i;:::-;;;;;;;;;;;6056:224:47;;;;;;;;;:::i;1890:162:49:-;;;:::i;8244:369::-;;;;;;;;;:::i;:::-;;;;;;;;8009:229;;;;;;;;;:::i;3300:223::-;;;;;;;;;:::i;:::-;;;;;;;;6450:346;;;;;;;;;:::i;3482:272:47:-;;;;;;;;;:::i;7516:226:49:-;;;;;;;;;:::i;1312:258:93:-;;;;;;;;;:::i;3529:223:49:-;;;;;;;;;:::i;8619:184::-;;;;;;;;;:::i;:::-;;;;;;;;2058:152;;;:::i;4244:277:47:-;;;;;;;;;:::i;2533:143:49:-;;;:::i;:::-;;;;;;;;6802:211;;;;;;;;;:::i;:::-;;;;;;;;8130:277:47;;;;;;;;;:::i;3919:261::-;;;;;;;;;:::i;11052:184:49:-;;;;;;;;;:::i;7728:269:47:-;;;;;;;;;:::i;1970:107:125:-;;;;;;;;;:::i;9510:263:49:-;;;;;;;;;:::i;4492:236::-;;;;;;;;;:::i;6150:294::-;;;;;;;;;:::i;5420:471::-;5520:13;5549:12;5564:1;5549:16;;5575:21;5610:1;5599:13;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;5599:13:49;-1:-1:-1;5668:2:49;5622:12;5637:35;:25;:35;;;;5575:37;;-1:-1:-1;5714:147:49;5721:12;;;;;:27;;;5747:1;5737:7;:11;5721:27;5714:147;;;5785:7;5764;5772:9;;;;;;5764:18;;;;;;;;;;;;;;;;;;:28;;;;5816:7;:34;;;:25;:34;;;;;;5714:147;;;-1:-1:-1;5877:7:49;-1:-1:-1;;5420:471:49;;;;:::o;5587:292:47:-;1103:9:125;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;;;;;;;;;1934:11:129;;-1:-1:-1;;;1934:11:129;;;;1926:55;;;;-1:-1:-1;;;1926:55:129;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:129;;;5761:111:47;;;;;:9;;:31;;:111;;2070:5:129;;5827:8:47;;5849:13;;5761:111;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5761:111:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2230:11:129;:18;;-1:-1:-1;;;;2230:18:129;-1:-1:-1;;;2230:18:129;;;-1:-1:-1;;;;5587:292:47:o;10872:174:49:-;10978:4;11005:34;10978:4;11030:8;11005:34;:24;:34;:::i;:::-;10998:41;10872:174;-1:-1:-1;;10872:174:49:o;2867:210::-;2975:7;2998:29;3018:8;2998:19;:29::i;:::-;3044:26;:7;3061:8;3044:26;:16;:26;:::i;4588:292:47:-;1103:9:125;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;1934:11:129;;-1:-1:-1;;;1934:11:129;;;;1926:55;;;;-1:-1:-1;;;1926:55:129;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:129;;;4760:113:47;;;;;:9;;:32;;:113;;2070:5:129;;4827:8:47;;4849:14;;4760:113;;;;9248:256:49;9362:21;;:::i;:::-;9385;;:::i;:::-;9429:68;9455:7;9491:5;9429:25;:68::i;:::-;9422:75;;;;9248:256;;;:::o;4021:225::-;4128:12;4156:29;4176:8;4156:19;:29::i;:::-;-1:-1:-1;4202:7:49;:25;;;:15;:25;;;;;:37;;;;;;4021:225::o;4252:234::-;4362:15;4393:29;4413:8;4393:19;:29::i;:::-;-1:-1:-1;4439:7:49;:25;;;:15;:25;;;;;:40;;;;;;4252:234::o;4734:236::-;4843:19;;:::i;:::-;4878:29;4898:8;4878:19;:29::i;:::-;-1:-1:-1;4924:7:49;:25;;;:15;:25;;;;;;;;;4917:46;;;;;;;;4924:39;;;;4917:46;;;;4734:236::o;2736:125::-;2806:7;2836:18;2736:125;:::o;2262:317:47:-;2429:7;1103:9:125;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;1934:11:129;;-1:-1:-1;;;1934:11:129;;;;1926:55;;;;-1:-1:-1;;;1926:55:129;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:129;;;2459:113:47;;;;;:9;;:40;;:113;;2070:5:129;;2534::47;;2553:9;;2459:113;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2459:113:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2459:113:47;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2459:113:47;;;;;;;;;2452:120;;2230:11:129;:18;;-1:-1:-1;;;;2230:18:129;-1:-1:-1;;;2230:18:129;;;2262:317:47;;-1:-1:-1;;2262:317:47:o;7222:258::-;1103:9:125;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;1934:11:129;;-1:-1:-1;;;1934:11:129;;;;1926:55;;;;-1:-1:-1;;;1926:55:129;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:129;;;7378:95:47;;;;;:9;;:34;;:95;;2070:5:129;;7447:16:47;;7378:95;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7378:95:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2230:11:129;:18;;-1:-1:-1;;;;2230:18:129;-1:-1:-1;;;2230:18:129;;;-1:-1:-1;;;7222:258:47:o;6446:238::-;1103:9:125;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;1934:11:129;;-1:-1:-1;;;1934:11:129;;;;1926:55;;;;-1:-1:-1;;;1926:55:129;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:129;;;6591:86:47;;;;;:9;;:35;;:86;;2070:5:129;;6661:6:47;;6591:86;;;;9034:208:49;9160:7;9190:45;9160:7;9227;9190:45;:36;:45;:::i;6853:240:47:-;1103:9:125;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;1934:11:129;;-1:-1:-1;;;1934:11:129;;;;1926:55;;;;-1:-1:-1;;;1926:55:129;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:129;;;6999:87:47;;;;;:9;;:30;;:87;;2070:5:129;;7064:12:47;;6999:87;;;;10664:202:49;10792:4;10819:40;10792:4;10843:5;10850:8;10819:40;:23;:40;:::i;:::-;10812:47;10664:202;-1:-1:-1;;;10664:202:49:o;7748:255::-;7885:16;;:::i;:::-;7917:29;7937:8;7917:19;:29::i;:::-;7963:33;:7;7978;7987:8;7963:33;:14;:33;:::i;5095:292:47:-;1103:9:125;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;1934:11:129;;-1:-1:-1;;;1934:11:129;;;;1926:55;;;;-1:-1:-1;;;1926:55:129;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:129;;;5269:111:47;;;;;:9;;:31;;:111;;2070:5:129;;5335:8:47;;5357:13;;5269:111;;;;1734:150:49;1805:19;;:::i;:::-;-1:-1:-1;1840:37:49;;;;;;;;;1847:18;1840:37;;;1734:150;:::o;3758:257::-;3866:21;;:::i;:::-;3903:29;3923:8;3903:19;:29::i;:::-;3949:59;3971:8;3981:26;:7;3971:8;3981:26;:16;:26;:::i;:::-;3949:7;;:59;;:21;:59;:::i;5195:219::-;5303:4;5323:29;5343:8;5323:19;:29::i;:::-;-1:-1:-1;5369:7:49;:25;;;:15;:25;;;;;:38;;;;;;;5195:219::o;4976:213::-;5081:4;5101:29;5121:8;5101:19;:29::i;:::-;-1:-1:-1;5147:7:49;:25;;;:15;:25;;;;;:35;-1:-1:-1;;;5147:35:49;;;;;4976:213::o;2384:143::-;2454:25;;:::i;:::-;-1:-1:-1;2495:25:49;;;;;;;;2502:18;2495:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2495:25:49;;;;;;;;;;;;;;;;;;;;2384:143;:::o;9779:879::-;9908:13;;;;;10067:39;:7;10098;10067:39;:30;:39;:::i;:::-;10040:66;;10116:23;10156:7;:14;10142:29;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;10142:29:49;;10116:55;;10181:23;10223:7;:14;10207:31;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;10181:57;;10248:23;10290:7;:14;10274:31;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;10248:57:49;-1:-1:-1;10321:9:49;10316:231;10340:7;:14;10336:1;:18;10316:231;;;10387:33;10409:7;10417:1;10409:10;;;;;;;;;;;;;;10387:21;:33::i;:::-;10375:6;10382:1;10375:9;;;;;;;;;;;;;:45;;;;;;;;;;;10444:34;10458:7;10467;10475:1;10467:10;;;;;;;;;;;;;;10444:13;:34::i;:::-;10434:4;10439:1;10434:7;;;;;;;;;;;;;:44;;;;10502:34;10516:7;10525;10533:1;10525:10;;;;;;;;;;;;;;10502:13;:34::i;:::-;10492:4;10497:1;10492:7;;;;;;;;;;;;;;;;;:44;10356:3;;10316:231;;;-1:-1:-1;10578:7:49;;10599:6;;-1:-1:-1;10599:6:49;-1:-1:-1;10578:7:49;;-1:-1:-1;9779:879:49;-1:-1:-1;;9779:879:49:o;1684:137:125:-;1103:9;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;1766:6;;1745:40;;1782:1;;1745:40;1766:6;;1745:40;;1782:1;;1745:40;1795:6;:19;;;;;;1684:137::o;2216:162:49:-;2292:21;;:::i;:::-;-1:-1:-1;2329:42:49;;;;;;;;;2336:35;2329:42;;;2216:162;:::o;1576:199:93:-;1722:13;;1705:31;;:7;:31;;;:16;:31;;;;;;;;1737:14;;;;1705:47;;;;;;;:63;;1762:6;;1705:47;:63;;;1762:6;1705:63;;;;;;;;;;;;;1576:199;;:::o;2745:569:47:-;1103:9:125;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;1934:11:129;;-1:-1:-1;;;1934:11:129;;;;1926:55;;;;-1:-1:-1;;;1926:55:129;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:129;;;3077:230:47;;;;;:9;;:24;;:230;;2070:5:129;;3136::47;;3155:11;;3180:14;;3208:13;;3235;;3262:9;;3285:12;;3077:230;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3077:230:47;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2230:11:129;:18;;-1:-1:-1;;;;2230:18:129;-1:-1:-1;;;2230:18:129;;;-1:-1:-1;;;;;;;;;2745:569:47:o;1806:377:51:-;1909:9;1904:273;1928:4;:11;1924:1;:15;1904:273;;;1960:16;1979:4;1984:1;1979:7;;;;;;;;;;;;;;:16;;;1960:35;;2009:12;2024:4;2029:1;2024:7;;;;;;;;;;;;;;;;;;;:15;;;2071:10;2053:7;:29;;;:17;:29;;;;;;;:39;;;;;;;;;;:49;;;;;;;;;;2121:45;;2024:15;;-1:-1:-1;2121:45:51;;;;2053:39;;2024:15;;2121:45;;;;;;;;;;-1:-1:-1;;1941:3:51;;1904:273;;;;1806:377;:::o;5897:247:49:-;5998:21;;:::i;:::-;6035:29;6055:8;6035:19;:29::i;:::-;6081:56;6100:8;6110:26;:7;6100:8;6110:26;:16;:26;:::i;:::-;6081:7;;:56;;:18;:56;:::i;899:77:125:-;963:6;;;;899:77;:::o;1250:92::-;1329:6;;1290:4;;1329:6;;1313:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;1855:313:47:-;2020:7;1103:9:125;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;1934:11:129;;-1:-1:-1;;;1934:11:129;;;;1926:55;;;;-1:-1:-1;;;1926:55:129;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:129;;;2050:111:47;;;;;:9;;:35;;:111;;2070:5:129;;2120:8:47;;2142:9;;2050:111;;;;3083:211:49;3192:7;3215:25;3234:5;3215:18;:25::i;:::-;-1:-1:-1;3257:30:49;;:7;:30;;;:23;:30;;;;;;;3083:211::o;8809:219::-;8943:16;8982:39;:7;9013;8982:39;:30;:39;:::i;2066:260:50:-;1934:11:129;;-1:-1:-1;;;1934:11:129;;;;1926:55;;;;-1:-1:-1;;;1926:55:129;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:129;;;2224:95:50;;;;;:13;;:21;;:95;;2070:5:129;;2280:8:50;;2302:7;;2224:95;;;;1781:412:93;1901:30;;:::i;:::-;-1:-1:-1;1934:7:93;:23;;;:15;:23;;;;;;;;;1901:62;;;;;;;1934:29;;;;1901:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1978:12;;:17;1974:78;;2026:15;;2011:30;;;;1974:78;2065:12;;;;:17;;2061:78;;2113:15;;;;;2098:30;;:12;;;:30;2061:78;-1:-1:-1;2149:7:93;:23;;;:15;:23;;;;;;;;;:37;;:29;;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1781:412::o;7019:491:49:-;7136:21;;:::i;:::-;7171;;:::i;:::-;7206;;:::i;:::-;7241:20;;:::i;:::-;7286:29;7306:8;7286:19;:29::i;:::-;7346:19;7356:8;7346:9;:19::i;:::-;7379:31;7401:8;7379:21;:31::i;:::-;7424:24;7439:8;7424:14;:24::i;:::-;7462:31;7484:8;7462:21;:31::i;:::-;7325:178;;;;;;;;7019:491;;;;;:::o;6056:224:47:-;1103:9:125;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;1934:11:129;;-1:-1:-1;;;1934:11:129;;;;1926:55;;;;-1:-1:-1;;;1926:55:129;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:129;;;6194:79:47;;;;;:9;;:29;;:79;;2070:5:129;;6258::47;;6194:79;;;;1890:162:49;1967:19;;:::i;:::-;-1:-1:-1;2002:43:49;;;;;;;;;2009:36;2002:43;;;1890:162;:::o;8244:369::-;8381:16;;:::i;:::-;8413:29;8433:8;8413:19;:29::i;:::-;8459:147;8490:33;:7;8505;8514:8;8490:33;:14;:33;:::i;:::-;8537:59;8559:8;8569:26;:7;8559:8;8569:26;:16;:26;:::i;8537:59::-;8459:17;:147::i;8009:229::-;8159:16;;:::i;3300:223::-;3404:21;;:::i;:::-;3441:29;3461:8;3441:19;:29::i;:::-;3487;:7;3507:8;3487:29;:19;:29;:::i;6450:346::-;6598:19;;:::i;:::-;6633:33;6653:12;6633:19;:33::i;:::-;6676;6696:12;6676:19;:33::i;:::-;6726:63;:7;6762:12;6776;6726:63;:35;:63;:::i;3482:272:47:-;1103:9:125;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;1934:11:129;;-1:-1:-1;;;1934:11:129;;;;1926:55;;;;-1:-1:-1;;;1926:55:129;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:129;;;3643:104:47;;;;;:9;;:28;;:104;;2070:5:129;;3706:9:47;;3729:8;;3643:104;;;;7516:226:49;7621:16;;:::i;:::-;7653:29;7673:8;7653:19;:29::i;:::-;7699:36;:7;7726:8;7699:36;:26;:36;:::i;1312:258:93:-;1468:27;1488:6;1468:19;:27::i;:::-;1505:58;;;;;:17;;:24;;:58;;1530:7;;1539;;1548:6;;1556;;1505:58;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1505:58:93;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1505:58:93;;;;1312:258;;;:::o;3529:223:49:-;3636:21;;:::i;:::-;3673:29;3693:8;3673:19;:29::i;:::-;3719:26;:7;3736:8;3719:26;:16;:26;:::i;8619:184::-;8733:14;8770:26;8733:14;8788:7;8770:26;:17;:26;:::i;2058:152::-;2130:19;;:::i;:::-;-1:-1:-1;2165:38:49;;;;;;;;;2172:31;2165:38;;;2058:152;:::o;4244:277:47:-;1103:9:125;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;1934:11:129;;-1:-1:-1;;;1934:11:129;;;;1926:55;;;;-1:-1:-1;;;1926:55:129;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:129;;;4407:107:47;;;;;:9;;:29;;:107;;2070:5:129;;4471:8:47;;4493:11;;4407:107;;;;2533:143:49;2603:25;;:::i;:::-;-1:-1:-1;2644:25:49;;;;;;;;2651:18;2644:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2533:143::o;6802:211::-;6898:21;;:::i;:::-;6935:29;6955:8;6935:19;:29::i;:::-;-1:-1:-1;6981:7:49;:25;;;:15;:25;;;;;;;;;6974:32;;;;;;;;;;;;;;;-1:-1:-1;;;6974:32:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6802:211::o;8130:277:47:-;1103:9:125;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;1934:11:129;;-1:-1:-1;;;1934:11:129;;;;1926:55;;;;-1:-1:-1;;;1926:55:129;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:129;;;8289:111:47;;;;;:9;;:35;;:111;;2070:5:129;;8359:10:47;;8383:7;;8289:111;;;;3919:261;1103:9:125;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;1934:11:129;;-1:-1:-1;;;1934:11:129;;;;1926:55;;;;-1:-1:-1;;;1926:55:129;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:129;;;4070:103:47;;;;;:9;;:27;;:103;;2070:5:129;;4132:8:47;;4154:9;;4070:103;;;;11052:184:49;11163:4;11190:39;11163:4;11218:10;11190:39;:27;:39;:::i;7728:269:47:-;1103:9:125;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;1934:11:129;;-1:-1:-1;;;1934:11:129;;;;1926:55;;;;-1:-1:-1;;;1926:55:129;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:129;;;7883:107:47;;;;;:9;;:32;;:107;;2070:5:129;;7950:8:47;;7972;;7883:107;;;;1970::125;1103:9;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:125;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;9510:263:49:-;9632:21;;:::i;:::-;9655;;:::i;:::-;9699:67;9725:7;9761:4;9699:25;:67::i;4492:236::-;4601:19;;:::i;:::-;4636:29;4656:8;4636:19;:29::i;:::-;-1:-1:-1;4682:7:49;:25;;;:15;:25;;;;;;;;;4675:46;;;;;;;;4682:39;;;;4675:46;;;;4492:236::o;6150:294::-;6258:20;;:::i;:::-;6294:29;6314:8;6294:19;:29::i;:::-;6340:97;6379:8;6401:26;:7;6379:8;6401:26;:16;:26;:::i;:::-;6340:7;;:97;;:25;:97;:::i;14844:207:79:-;15013:31;;14986:4;15013:31;;;:21;;;;;:31;;;;;;;;;14844:207::o;11364:274:49:-;11506:7;:18;11469:162;;11495:29;;:78;;;;-1:-1:-1;11571:1:49;11528:25;;;:15;:25;;;;;:31;:45;:31;:45;;11495:78;11587:4;;11469:162;:12;:162::i;6920:200:79:-;7054:7;7084:23;;;:13;;;;;:23;;;;;:29;;;;6920:200::o;11987:606:49:-;12144:21;;:::i;:::-;12167;;:::i;:::-;12204:24;12231:39;:7;12262;12231:39;:30;:39;:::i;:::-;12204:66;;12307:30;;:::i;:::-;12340:28;12353:7;:14;12340:12;:28::i;:::-;12307:61;-1:-1:-1;12383:9:49;12378:91;12402:7;:14;12398:1;:18;12378:91;;;12437:21;12447:7;12455:1;12447:10;;;;;;;;;;;;;;12437:5;:9;;:21;;;;:::i;:::-;12418:3;;12378:91;;;-1:-1:-1;12478:30:49;:7;12502:5;12478:30;:23;:30;:::i;:::-;12526:60;:7;12551;12560:5;12567:18;12526:60;:24;:60;:::i;:::-;12519:67;;;;;;11987:606;;;;;:::o;9926:261:79:-;10124:13;;10109:29;;10079:7;10109:29;;;:14;;;;;:29;;;;;;;;10139:14;;;;10109:45;;;;;;;:71;;;;;;;9926:261::o;15280:230::-;15471:22;;;;15444:4;15471:22;;;:15;;;;;:22;;;;;;;;:32;;;;;;;;;;;;;15280:230::o;8620:279::-;8789:16;;:::i;:::-;-1:-1:-1;8843:13:79;;8828:29;;;;;;:14;;;:29;;;;;;;;8858:14;;;;8828:45;;;;;;;:64;;;:54;;:64;;;;;;8821:71;;;;;;;;;;;;;;;;;;;;;;;;;;8620:279;;;;;:::o;7352:214::-;7486:21;;:::i;:::-;-1:-1:-1;7530:23:79;;;;:13;;;;;:23;;;;;;;;;7523:36;;;;;;;7530:29;;;;7523:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7352:214::o;10749:463::-;10925:21;;:::i;:::-;10962:25;;:::i;:::-;10990:40;:5;11014:8;11024:5;10990:40;:23;:40;:::i;:::-;10962:68;-1:-1:-1;11048:157:79;11088:5;10962:68;11125:27;:5;11143:8;11125:27;:17;:27;:::i;:::-;11048:157;;;;;;;;;11166:29;;;11048:157;;;:26;:157::i;:::-;11041:164;10749:463;-1:-1:-1;;;;;10749:463:79:o;9644:276::-;9845:13;;9830:29;;;;;;:14;;;:29;;;;;;;;9860:14;;;;9830:45;;;;;;;9791:16;;9830:83;;:74;;:81;:83::i;11870:496::-;12029:21;;:::i;:::-;12066:19;12101:23;;;:13;;;:23;;;;;:35;;;;;12147:27;;:::i;:::-;12177:22;;;;;:15;;;;;;:22;;12193:5;;12177:22;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12177:22:79;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12177:22:79;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12177:22:79;;;;;;;;;12235:11;;12147:52;;-1:-1:-1;12209:128:79;;12235:16;;12265:4;12209:128;12319:8;12209:12;:128::i;788:96:122:-;867:10;788:96;:::o;11644:252:49:-;11795:30;;;;11779:7;11795:30;;;:23;:30;;;;;;;;;11779:47;;:15;:47;;;;;:53;11846:4;;11744:145;;11779:53;;;;11770:62;;;;11744:145;:12;:145::i;4154:567:74:-;4285:16;;:::i;:::-;4346:11;;;;4372:10;;4338:20;;;;;4368:347;;;4405:130;;;;;;;;;4439:4;4405:130;;;4501:12;;;;4405:130;;;;4468:52;;:10;;:52;;1200:6;4468:52;:32;:52;:::i;:::-;4405:130;;;4398:137;;;;;4368:347;4573:131;;;;;;;;;-1:-1:-1;4573:131:74;;4670:12;;4573:131;;;;4637:52;;:10;;:52;;1200:6;4637:52;:32;:52;:::i;7126:220:79:-;7263:21;;:::i;:::-;-1:-1:-1;7307:23:79;;;;:13;;;;:23;;;;;;;;;7300:39;;;;;;;;7307:32;;;7300:39;;;;;;;;;;;;;;;;7126:220;;;;:::o;10193:550::-;10380:19;;:::i;:::-;10432:34;;;:40;10415:14;10527:27;;;10432:34;10527:13;;:27;;;;;;;;;10511:58;;;;;;;;10527:41;;;;10511:58;;;10491:79;;10432:40;;10511:58;;:15;:58::i;:::-;10491:11;:79::i;:::-;10482:88;;10589:79;10601:6;10609:58;10625:5;:13;;:27;10639:12;10625:27;;;;;;;;;;;:41;;10609:58;;;;;;;;;;;;;;;;;:15;:58::i;10589:79::-;10685:51;;;;;;;;;;;;;10193:550;-1:-1:-1;;;;;10193:550:79:o;7572:794::-;7716:16;;:::i;:::-;7748:27;;:::i;:::-;7778:24;:5;7793:8;7778:24;:14;:24;:::i;:::-;7748:54;;7812:30;;:::i;:::-;7845:27;:5;7863:8;7845:27;:17;:27;:::i;:::-;7812:60;-1:-1:-1;7883:13:79;7899:24;:5;7914:8;7899:24;:14;:24;:::i;:::-;7883:40;;7934:27;;:::i;:::-;7964:112;;;;;;;;7994:4;7964:112;;8019:46;;;;;7964:112;;;;8019:31;;;;;;:46;;8059:4;;8019:46;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8019:46:79;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8019:46:79;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8019:46:79;;;;;;;;;7964:112;;7934:142;-1:-1:-1;8101:26:79;;:::i;:::-;8141;;:::i;:::-;8180:39;8203:8;8213:5;8180:22;:39::i;:::-;8087:132;;-1:-1:-1;8087:132:79;-1:-1:-1;8319:40:79;8087:132;8319:25;:10;8087:132;8319:25;:14;:25;:::i;:::-;:29;:40;:29;:40;:::i;:::-;8312:47;7572:794;-1:-1:-1;;;;;;;;;7572:794:79:o;8372:242::-;8570:13;;8555:29;;8518:14;8555:29;;;:14;;;;;:29;;;;;;;;8585:14;;;;8555:45;;;;;;;:52;;;;8372:242::o;15057:217::-;15231:36;;15204:4;15231:36;;;:24;;;;;:36;;;;;;;;;15057:217::o;2178:225:125:-;2251:22;;;2243:73;;;;-1:-1:-1;;;2243:73:125;;;;;;;;;2352:6;;2331:38;;;;;;;2352:6;;2331:38;;2352:6;;2331:38;2379:6;:17;;;;;;;;;;;;;;;2178:225::o;11218:646:79:-;11398:20;;:::i;:::-;11434:30;;:::i;:::-;11467:27;:5;11485:8;11467:27;:17;:27;:::i;:::-;11434:60;;11518:26;;:::i;:::-;11558;;:::i;:::-;11597:39;11620:8;11630:5;11597:22;:39::i;:::-;11504:132;;;;11647:25;;:::i;:::-;11675:23;;;;:13;;;:23;;;;;:38;;;;;:54;11743:24;11675:5;11689:8;11743:24;:14;:24;:::i;:::-;11781:9;:15;;;11810:9;:15;;;11675:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11675:160:79;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11675:160:79;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11675:160:79;;;;;;;;;11647:188;11218:646;-1:-1:-1;;;;;;;;11218:646:79:o;1294:426:77:-;1428:4;1423:291;;1542:24;1561:4;1542:18;:24::i;:::-;1592:5;1623:26;1642:6;1623:18;:26::i;:::-;1500:171;;;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;1500:171:77;;;;-1:-1:-1;;;1448:255:77;;;;;;;;1423:291;1294:426;;;:::o;1453:299:68:-;1550:18;;:::i;:::-;1591:154;;;-1:-1:-1;1591:154:68;;;1626:19;;;;;;;;;1591:154;;;;1626:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1591:154;;;;1674:30;1693:10;1674:18;:30::i;:::-;1591:154;;1733:1;1591:154;;;;;1584:161;1453:299;-1:-1:-1;;1453:299:68:o;2613:453::-;2883:13;;:20;2857:114;;2883:25;2922:4;2857:114;:12;:114::i;:::-;2982:42;2994:5;:19;;;3015:8;2982:11;:42::i;:::-;-1:-1:-1;3035:19:68;;:24;;3058:1;3035:24;;;2613:453::o;23520:2105:79:-;23691:5;:19;;;23668:43;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;23652:59:79;;:13;;24061:1352;24082:5;:19;;;:26;24078:1;:30;24061:1352;;;24129:11;24143:5;:19;;;24163:1;24143:22;;;;;;;;;;;;;;24129:36;;24179:1137;24186:11;;24179:1137;;24217:15;24235:35;24263:6;24235:27;:35::i;:::-;24217:53;;24288:13;24304:38;24328:1;24331:10;24304:23;:38::i;:::-;24288:54;-1:-1:-1;24360:13:79;24376:24;:5;24288:54;24376:24;:14;:24;:::i;:::-;24422:23;;;;:13;;;:23;;;;;:33;24360:40;;-1:-1:-1;;;;24422:33:79;;;;24418:786;;;24506:280;;;;;;;;;;;;;;;;;;24630:4;24506:280;;;;;;;;;;24667:27;:5;24555:8;24667:27;:17;:27;:::i;:::-;:34;24506:280;;;;;;24730:33;:5;24747:8;24757:5;24730:33;:16;:33;:::i;:::-;24506:280;;24479:13;;:24;;24493:9;;;;;24479:24;;;;;;;;;;;:307;;;;24418:786;;;24937:248;;;;;;;;;;;;;;;;;;-1:-1:-1;24937:248:79;;;;;;;;;;;;;;;;25129:33;:5;24986:8;25023:5;25129:33;:16;:33;:::i;:::-;24937:248;;24910:13;;:24;;24924:9;;;;;24910:24;;;;;;;;;;;:275;;;;24418:786;25268:33;25282:6;25290:10;25268:13;:33::i;:::-;25259:42;;24179:1137;;;;;;25344:5;:19;;;25333:7;:30;25329:74;;;25383:5;;;25329:74;-1:-1:-1;24110:3:79;;24061:1352;;;-1:-1:-1;25449:19:79;;;;25588:13;;:20;25423:195;;25449:30;;;;25493:4;;25423:195;;:12;:195::i;12372:1243::-;12598:21;;:::i;:::-;12621;;:::i;:::-;12658:33;;:::i;:::-;12701;;:::i;:::-;12745:18;12766:21;:5;:19;:21::i;:::-;12745:42;-1:-1:-1;12802:9:79;12797:768;12821:10;12817:1;:14;12797:768;;;12852:24;;:::i;:::-;12879:51;12892:7;12901:19;:5;12918:1;12901:19;:16;:19;:::i;:::-;:28;12879:5;;:51;;:12;:51;:::i;:::-;12852:78;;12949:16;:7;:14;:16::i;:::-;12945:63;;;12985:8;;;12945:63;13022:18;13043:50;13061:19;:5;13078:1;13061:19;:16;:19;:::i;:::-;:25;;;:31;13043:13;;;;;:50;:17;:50;:::i;:::-;13022:71;;13107:26;;:::i;:::-;13136:13;:11;:13::i;:::-;13107:42;;13167:18;13163:140;;;13214:74;13230:13;;;:43;13244:19;:5;13261:1;13244:19;:16;:19;:::i;:::-;:28;13230:43;;;;;;;;;;;;;;13244:28;13230:43;13214:74;;;;;;;;13230:57;;13214:74;;;:15;:74::i;:::-;13205:83;;13163:140;13321:12;;13317:238;;;13373:54;13395:31;13407:10;13419:6;13395:11;:31::i;:::-;13373:17;;;:54;:21;:54;:::i;:::-;13353:74;;13317:238;;;13486:54;13508:31;13520:10;13532:6;13508:11;:31::i;:::-;13486:17;;;:54;:21;:54;:::i;:::-;13466:74;;13317:238;12797:768;;;;12833:3;;12797:768;;;-1:-1:-1;13583:11:79;;13596;;-1:-1:-1;12372:1243:79;-1:-1:-1;;;;;;12372:1243:79:o;2227:1610:74:-;2443:12;;:::i;:::-;2485:26;;:::i;:::-;2525;;:::i;:::-;2564:30;2578:8;2588:5;2564:13;:30::i;:::-;2471:123;;;;2652:18;2673;:16;:18::i;:::-;2652:39;;2701:22;2726:58;2741:42;2766:5;:16;;;2741:42;;2749:11;2741:20;;:24;;:42;;;;:::i;:::-;2726:10;;;:58;:14;:58;:::i;:::-;2701:83;;2842:22;2878:23;2891:9;2878:12;:23::i;:::-;2874:639;;;-1:-1:-1;2934:1:74;2874:639;;;2983:41;2995:14;3011:12;2983:11;:41::i;:::-;2966:58;;3060:9;:15;;;3042:9;:15;;;:33;3038:465;;;3423:65;3439:14;3455:9;:15;;;3472:9;:15;;;3423;:65::i;:::-;3406:82;;3038:465;3547:14;3529;:32;;3522:40;;;;3580:250;;;;;;;;;3664:12;;3580:250;;3608:76;;:69;;;;:51;:69;3638:14;1200:6;3608:15;:51::i;:::-;:55;:69;:55;:69;:::i;:::-;:74;:76::i;:::-;3580:250;;;;;;;3762:12;;;;3580:250;;;3706:76;;:69;;;:51;:69;3736:14;1200:6;3706:15;:51::i;:76::-;3580:250;;;;;;3808:11;3580:250;;;;;3573:257;;;;;;;2227:1610;;;;;;;:::o;4037:109:70:-;4093:16;4128:3;:11;;4121:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4037:109;;;:::o;1726:561:77:-;1886:4;1881:400;;2000:24;2019:4;2000:18;:24::i;:::-;2050:5;2081:26;2100:6;2081:18;:26::i;:::-;2133:6;2165:19;2175:8;2165:9;:19::i;:::-;1958:280;;;;;;;;;2210:6;;1958:280;;;;1881:400;1726:561;;;;:::o;2059:724:75:-;2223:7;2250:11;;;:29;;-1:-1:-1;2265:14:75;;2250:29;2246:151;;;2358:28;2371:1;2374:11;2358:12;:28::i;:::-;2351:35;;;;2246:151;2406:11;2420:21;:6;2431:9;2420:21;:10;:21;:::i;:::-;2406:35;-1:-1:-1;2680:96:75;2735:32;2765:1;2735:25;2758:1;2735:18;:11;2765:1;2735:18;:15;:18;:::i;:::-;:22;:25;:22;:25;:::i;:32::-;2708:23;:6;2719:11;2708:23;:10;:23;:::i;:::-;:59;;:67;;2774:1;2708:67;;;2770:1;2708:67;2680:96;;:23;:6;2691:11;2680:23;:10;:23;:::i;1283:168:69:-;1376:11;;:::i;:::-;1410:34;;;;;;;;;1424:7;;1410:34;;1424:17;;1006:6;1424:17;:11;:17;:::i;:::-;1410:34;;1403:41;1283:168;-1:-1:-1;;1283:168:69:o;1457:188::-;1570:7;1600:38;1616:6;1624:1;:7;;;1006:6;1600:15;:38::i;5487:601:74:-;5631:16;;:::i;:::-;5649;;:::i;:::-;5681:26;;:::i;:::-;-1:-1:-1;5710:81:74;;;;;;;;;5740:4;5710:81;;;5765:15;;;;5710:81;;;;;;5801:26;;:::i;:::-;-1:-1:-1;5830:82:74;;;;;;;;;-1:-1:-1;5830:82:74;;5886:15;;5830:82;;;;;;5922:26;;:::i;:::-;5951;5960:9;5971:5;5951:8;:26::i;:::-;5922:55;;5987:26;;:::i;:::-;6016;6025:9;6036:5;6016:8;:26::i;:::-;6060:9;;;;-1:-1:-1;5487:601:74;;-1:-1:-1;;;;;;5487:601:74:o;4555:169:82:-;4665:10;;:::i;:::-;4698:19;4702:1;4705:11;4714:1;4705:8;:11::i;:::-;4698:3;:19::i;6359:966:77:-;6462:12;6537:19;6576:5;6559:23;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;6559:23:77;;;;-1:-1:-1;49:4;6688:571:77;6709:5;;6688:571;;6960:9;;6862:3;;;;;6960:6;;6862:3;;6960:9;;;;;;;;;;;;:14;6956:293;;7015:1;7011:5;7141:22;;7148:6;-1:-1:-1;7221:13:77;;6956:293;6688:571;;;-1:-1:-1;;7306:12:77;;;7316:1;7306:12;;;;;;;;;7299:19;-1:-1:-1;;6359:966:77:o;996:146:67:-;1058:13;893:1;942:3;1102:9;:25;1101:33;1090:45;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;1090:45:67;-1:-1:-1;1083:52:67;996:146;-1:-1:-1;;996:146:67:o;1308:263::-;1517:20;;942:3;1427:24;;;1483;;;;893:1;1542:21;;;1517:7;;1427:24;;1517:20;;;;;;;;;;;:47;;;;;;;;;;;1308:263;;;;:::o;2086:1014::-;2152:4;2223:3;2241:15;;;:19;2237:100;;2276:10;;2237:100;;;2323:3;2317:9;;;;;2237:100;2351:14;;;:18;2347:97;;2385:9;;2347:97;;;2431:2;2425:8;;;;;2347:97;2458:14;;;:18;2454:97;;2492:9;;2454:97;;;2538:2;2532:8;;;;;2454:97;2565:14;;;:18;2561:97;;2599:9;;2561:97;;;2645:2;2639:8;;;;;2561:97;2672:13;;;:17;2668:94;;2705:8;;2668:94;;;2750:1;2744:7;;;;;2668:94;2780:3;2776:7;;:11;2772:88;;2803:8;;2772:88;;;2848:1;2842:7;;;;;2772:88;2878:3;2874:7;;:11;2870:143;;2901:8;;2870:143;;;2946:1;2940:7;;;;;2870:143;3031:3;3027:7;;:11;3023:50;;3054:8;;3090:3;2086:1014;-1:-1:-1;;2086:1014:67:o;1148:154::-;942:3;1267:21;;;;1266:29;;1148:154::o;1895:137::-;893:1;2014:10;;2004:21;;;1895:137::o;2293:663:77:-;2479:4;2474:476;;2593:24;2612:4;2593:18;:24::i;:::-;2643:5;2674:26;2693:6;2674:18;:26::i;:::-;2726:6;2758:19;2768:8;2758:9;:19::i;:::-;2803:5;2834:19;2844:8;2834:9;:19::i;:::-;2551:356;;;;;;;;;;;2879:6;;2551:356;;;;2474:476;2293:663;;;;;:::o;1809:167:68:-;1949:13;:20;;1809:167::o;3072:371::-;3202:17;;:::i;:::-;3269:13;;:20;3235:164;;3261:28;;;;3303:4;;3235:164;;3261:5;;3235:12;:164::i;:::-;3416:13;;:20;;3430:5;;3416:20;;;;;;;;;;;;3409:27;;3072:371;;;;:::o;8905:448:79:-;9074:16;;:::i;:::-;9106:20;;:::i;:::-;9129:31;:5;9142:7;9151:8;9129:31;:12;:31;:::i;:::-;9106:54;;9175:12;:3;:10;:12::i;:::-;9171:65;;;9210:15;:13;:15::i;:::-;9203:22;;;;;9171:65;9246:27;;:::i;:::-;9276:24;:5;9291:8;9276:24;:14;:24;:::i;:::-;9246:54;;9317:29;9335:3;9340:5;9317:17;:29::i;:::-;9310:36;8905:448;-1:-1:-1;;;;;;8905:448:79:o;6182:137:82:-;6300:7;;;:12;;6182:137::o;2159:459:124:-;2217:7;2458:6;2454:45;;-1:-1:-1;2487:1:124;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;:1;2544:5;;;;;:10;2536:56;;;;-1:-1:-1;;;2536:56:124;;;;;;;;1153:124:69;1215:11;;:::i;:::-;-1:-1:-1;1249:21:69;;;;;;;;;1006:6;1249:21;;1153:124;:::o;1651:188::-;1764:7;1794:38;1810:6;1006;1824:1;:7;;;1794:15;:38::i;834:176:124:-;892:7;923:5;;;946:6;;;;938:46;;;;-1:-1:-1;;;938:46:124;;;;;;;;910:132:80;980:6;1009:26;1019:15;1009:9;:26::i;:::-;1002:33;;910:132;:::o;1274:134:124:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;1110:228:75:-;1263:7;1293:38;1319:11;1293:21;:6;1304:9;1293:21;:10;:21;:::i;3110:310::-;3201:6;3246;3263:127;3289:16;;;;;3319:4;3263:127;3246:6;3263:12;:127::i;7331:912:77:-;7425:12;7457:10;7453:51;;-1:-1:-1;7483:10:77;;;;;;;;;;;;;;;;;;;7453:51;7565:5;7553:9;7604:69;7611:6;;7604:69;;7633:8;;7660:2;7655:7;;;;7604:69;;;7714:17;7744:6;7734:17;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;7734:17:77;87:34:-1;135:17;;-1:-1;7734:17:77;-1:-1:-1;7843:5:77;;-1:-1:-1;7714:37:77;-1:-1:-1;7875:6:77;7858:357;7883:5;;7858:357;;8036:3;;8132:2;8128:1;:6;902:2;8114:21;8103:34;;8093:4;8098:1;8093:7;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;8202:2:77;8197:7;;;;7858:357;;;-1:-1:-1;8232:4:77;7331:912;-1:-1:-1;;;;7331:912:77:o;3073:130:124:-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;4500:128::-;4558:7;4584:37;4588:1;4591;4584:37;;;;;;;;;;;;;;;;;:3;:37::i;5660:203:82:-;5753:10;;:::i;:::-;-1:-1:-1;5786:70:82;;;;;;;;;5811:6;;5810:7;5786:70;;;5838:7;;;;5786:70;;;;5660:203;;;:::o;4730:610::-;4840:10;;:::i;:::-;4866:17;;:::i;:::-;4907:6;;4897;;:16;;;;;;4893:418;;;4943:6;;4929:20;;;;4991:7;;;;;5000;;;;4978:30;;4991:7;4978:12;:30::i;:::-;4963:12;;;:45;4893:418;;;5054:1;:7;;;5043:1;:7;;;:18;5039:262;;5095:6;;5081:20;;;;5147:7;;;;;5156;;;;5134:30;;5147:7;5134:12;:30::i;5039:262::-;5217:6;;5203:20;;;;5269:7;;;;;5278;;;;5256:30;;5269:7;5256:12;:30::i;:::-;5241:12;;;:45;:12;4730:610;-1:-1:-1;;;4730:610:82:o;3722:137::-;3840:7;;;:12;;;;3722:137::o;4381:168::-;4447:10;;:::i;:::-;-1:-1:-1;4480:62:82;;;;;;;;;-1:-1:-1;4480:62:82;;;;;;;4381:168;:::o;3426:310:75:-;3517:6;3562;3579:127;3605:16;;;;;3635:4;3579:127;3562:6;3579:12;:127::i;1732:187:124:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;1837:29:124;;;;;;;;;;-1:-1:-1;;;1888:5:124;;;1732:187::o;3718:338::-;3804:7;3904:12;3897:5;3889:28;;;;-1:-1:-1;;;3889:28:124;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:124:o;5132:163::-;5218:7;5253:12;5245:6;5237:29;;;;-1:-1:-1;;;5237:29:124;;;;;;;;;;;5287:1;5283;:5;;;;;;;5132:163;-1:-1:-1;;;;5132:163:124:o;1008:1187:93:-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;1008:1187:93;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1008:1187:93;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1008:1187:93;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;1008:1187:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5:130:-1:-;72:20;;97:33;72:20;97:33;;178:753;;320:3;313:4;305:6;301:17;297:27;287:2;;338:1;335;328:12;287:2;375:6;362:20;397:105;412:89;494:6;412:89;;;397:105;;;530:21;;;574:4;562:17;;;;388:114;;-1:-1;587:14;;562:17;682:1;667:258;692:6;689:1;686:13;667:258;;;775:3;762:17;754:6;750:30;799:62;857:3;845:10;799:62;;;787:75;;-1:-1;885:4;876:14;;;;904;;;;;714:1;707:9;667:258;;;671:14;280:651;;;;;;;;969:764;;1105:3;1098:4;1090:6;1086:17;1082:27;1072:2;;1123:1;1120;1113:12;1072:2;1160:6;1147:20;1182:99;1197:83;1273:6;1197:83;;1182:99;1173:108;;1298:5;1323:6;1316:5;1309:21;1353:4;1345:6;1341:17;1331:27;;1375:4;1370:3;1366:14;1359:21;;1428:6;1475:3;1467:4;1459:6;1455:17;1450:3;1446:27;1443:36;1440:2;;;1492:1;1489;1482:12;1440:2;1517:1;1502:225;1527:6;1524:1;1521:13;1502:225;;;1585:3;1607:56;1659:3;1647:10;1607:56;;;1595:69;;-1:-1;1687:4;1678:14;;;;1715:4;1706:14;;;;;1549:1;1542:9;1502:225;;1776:785;;1919:3;1912:4;1904:6;1900:17;1896:27;1886:2;;1937:1;1934;1927:12;1886:2;1974:6;1961:20;1996:106;2011:90;2094:6;2011:90;;1996:106;1987:115;;2119:5;2144:6;2137:5;2130:21;2174:4;2166:6;2162:17;2152:27;;2196:4;2191:3;2187:14;2180:21;;2249:6;2296:3;2288:4;2280:6;2276:17;2271:3;2267:27;2264:36;2261:2;;;2313:1;2310;2303:12;2261:2;2338:1;2323:232;2348:6;2345:1;2342:13;2323:232;;;2406:3;2428:63;2487:3;2475:10;2428:63;;;2416:76;;-1:-1;2515:4;2506:14;;;;2543:4;2534:14;;;;;2370:1;2363:9;2323:232;;2587:707;;2704:3;2697:4;2689:6;2685:17;2681:27;2671:2;;2722:1;2719;2712:12;2671:2;2759:6;2746:20;2781:80;2796:64;2853:6;2796:64;;2781:80;2772:89;;2878:5;2903:6;2896:5;2889:21;2933:4;2925:6;2921:17;2911:27;;2955:4;2950:3;2946:14;2939:21;;3008:6;3055:3;3047:4;3039:6;3035:17;3030:3;3026:27;3023:36;3020:2;;;3072:1;3069;3062:12;3020:2;3097:1;3082:206;3107:6;3104:1;3101:13;3082:206;;;3165:3;3187:37;3220:3;3208:10;3187:37;;;3175:50;;-1:-1;3248:4;3239:14;;;;3267;;;;;3129:1;3122:9;3082:206;;3302:124;3366:20;;3391:30;3366:20;3391:30;;3434:432;;3531:3;3524:4;3516:6;3512:17;3508:27;3498:2;;3549:1;3546;3539:12;3498:2;3586:6;3573:20;3608:60;3623:44;3660:6;3623:44;;3608:60;3599:69;;3688:6;3681:5;3674:21;3724:4;3716:6;3712:17;3757:4;3750:5;3746:16;3792:3;3783:6;3778:3;3774:16;3771:25;3768:2;;;3809:1;3806;3799:12;3768:2;3819:41;3853:6;3848:3;3843;3819:41;;;3491:375;;;;;;;;3874:180;3966:20;;3991:58;3966:20;3991:58;;4242:162;4325:20;;4350:49;4325:20;4350:49;;4411:176;4501:20;;4526:56;4501:20;4526:56;;4771:154;4850:20;;4875:45;4850:20;4875:45;;4964:1528;;5078:6;5066:9;5061:3;5057:19;5053:32;5050:2;;;5098:1;5095;5088:12;5050:2;5116:22;5131:6;5116:22;;;5107:31;-1:-1;5194:1;5226:65;5287:3;5267:9;5226:65;;;5201:91;;-1:-1;5358:2;5391:49;5436:3;5412:22;;;5391:49;;;5384:4;5377:5;5373:16;5366:75;5313:139;5504:2;5537:75;5608:3;5599:6;5588:9;5584:22;5537:75;;;5530:4;5523:5;5519:16;5512:101;5462:162;5685:3;5719:49;5764:3;5755:6;5744:9;5740:22;5719:49;;;5712:4;5705:5;5701:16;5694:75;5634:146;5843:3;5877:49;5922:3;5913:6;5902:9;5898:22;5877:49;;;5870:4;5863:5;5859:16;5852:75;5790:148;5996:3;6030:49;6075:3;6066:6;6055:9;6051:22;6030:49;;;6023:4;6016:5;6012:16;6005:75;5948:143;6151:3;6185:49;6230:3;6221:6;6210:9;6206:22;6185:49;;;6178:4;6171:5;6167:16;6160:75;6101:145;6324:3;6313:9;6309:19;6296:33;6349:18;6341:6;6338:30;6335:2;;;6381:1;6378;6371:12;6335:2;6416:54;6466:3;6457:6;6446:9;6442:22;6416:54;;;6409:4;6402:5;6398:16;6391:80;6256:226;5044:1448;;;;;6530:804;;6645:4;6633:9;6628:3;6624:19;6620:30;6617:2;;;6663:1;6660;6653:12;6617:2;6681:20;6696:4;6681:20;;;6672:29;-1:-1;6751:1;6783:46;6825:3;6805:9;6783:46;;;6758:72;;-1:-1;6899:2;6932:72;7000:3;6976:22;;;6932:72;;;6925:4;6918:5;6914:16;6907:98;6851:165;7065:2;7098:69;7163:3;7154:6;7143:9;7139:22;7098:69;;;7091:4;7084:5;7080:16;7073:95;7026:153;7230:2;7263:49;7308:3;7299:6;7288:9;7284:22;7263:49;;;7256:4;7249:5;7245:16;7238:75;7189:135;6611:723;;;;;7367:322;;7479:4;7467:9;7462:3;7458:19;7454:30;7451:2;;;7497:1;7494;7487:12;7451:2;7515:20;7530:4;7515:20;;;7506:29;-1:-1;7586:1;7618:49;7663:3;7643:9;7618:49;;;7593:75;;-1:-1;7604:5;7445:244;-1:-1;;7445:244;7724:617;;7837:4;7825:9;7820:3;7816:19;7812:30;7809:2;;;7855:1;7852;7845:12;7809:2;7873:20;7888:4;7873:20;;;7864:29;-1:-1;7945:1;7977:48;8021:3;8001:9;7977:48;;;7952:74;;-1:-1;8089:2;8122:48;8166:3;8142:22;;;8122:48;;;8115:4;8108:5;8104:16;8097:74;8047:135;8238:2;8271:48;8315:3;8306:6;8295:9;8291:22;8271:48;;;8264:4;8257:5;8253:16;8246:74;8192:139;7803:538;;;;;8374:464;;8482:4;8470:9;8465:3;8461:19;8457:30;8454:2;;;8500:1;8497;8490:12;8454:2;8518:20;8533:4;8518:20;;;8509:29;-1:-1;8589:1;8621:49;8666:3;8646:9;8621:49;;;8596:75;;-1:-1;8734:2;8767:49;8812:3;8788:22;;;8767:49;;;8760:4;8753:5;8749:16;8742:75;8692:136;8448:390;;;;;9377:472;;9492:4;9480:9;9475:3;9471:19;9467:30;9464:2;;;9510:1;9507;9500:12;9464:2;9528:20;9543:4;9528:20;;;9519:29;-1:-1;9602:1;9634:49;9679:3;9659:9;9634:49;;;9609:75;;-1:-1;9748:2;9781:46;9823:3;9799:22;;;9781:46;;9879:462;;9990:4;9978:9;9973:3;9969:19;9965:30;9962:2;;;10008:1;10005;9998:12;9962:2;10026:20;10041:4;10026:20;;;10017:29;-1:-1;10096:1;10128:46;10170:3;10150:9;10128:46;;;10103:72;;-1:-1;10237:2;10270:49;10315:3;10291:22;;;10270:49;;10376:345;;10500:4;10488:9;10483:3;10479:19;10475:30;10472:2;;;10518:1;10515;10508:12;10472:2;10536:20;10551:4;10536:20;;;10527:29;-1:-1;10607:1;10639:60;10695:3;10675:9;10639:60;;11464:130;11531:20;;11556:33;11531:20;11556:33;;11601:130;11668:20;;11693:33;11668:20;11693:33;;11738:134;11816:13;;11834:33;11816:13;11834:33;;11879:128;11945:20;;11970:32;11945:20;11970:32;;12014:128;12080:20;;12105:32;12080:20;12105:32;;12149:241;;12253:2;12241:9;12232:7;12228:23;12224:32;12221:2;;;12269:1;12266;12259:12;12221:2;12304:1;12321:53;12366:7;12346:9;12321:53;;12397:366;;;12518:2;12506:9;12497:7;12493:23;12489:32;12486:2;;;12534:1;12531;12524:12;12486:2;12569:1;12586:53;12631:7;12611:9;12586:53;;;12576:63;;12548:97;12676:2;12694:53;12739:7;12730:6;12719:9;12715:22;12694:53;;;12684:63;;12655:98;12480:283;;;;;;12770:360;;;12888:2;12876:9;12867:7;12863:23;12859:32;12856:2;;;12904:1;12901;12894:12;12856:2;12939:1;12956:53;13001:7;12981:9;12956:53;;;12946:63;;12918:97;13046:2;13064:50;13106:7;13097:6;13086:9;13082:22;13064:50;;13137:1169;;;;;;;;13430:3;13418:9;13409:7;13405:23;13401:33;13398:2;;;13447:1;13444;13437:12;13398:2;13482:1;13499:53;13544:7;13524:9;13499:53;;;13489:63;;13461:97;13589:2;13607:75;13674:7;13665:6;13654:9;13650:22;13607:75;;;13597:85;;13568:120;13719:2;13737:78;13807:7;13798:6;13787:9;13783:22;13737:78;;;13727:88;;13698:123;13852:2;13870:76;13938:7;13929:6;13918:9;13914:22;13870:76;;;13860:86;;13831:121;13983:3;14002:76;14070:7;14061:6;14050:9;14046:22;14002:76;;;13992:86;;13962:122;14115:3;14134:50;14176:7;14167:6;14156:9;14152:22;14134:50;;;14124:60;;14094:96;14221:3;14240:50;14282:7;14273:6;14262:9;14258:22;14240:50;;;14230:60;;14200:96;13392:914;;;;;;;;;;;14313:726;;;14528:2;14516:9;14507:7;14503:23;14499:32;14496:2;;;14544:1;14541;14534:12;14496:2;14579:31;;14630:18;14619:30;;14616:2;;;14662:1;14659;14652:12;14616:2;14682:97;14771:7;14762:6;14751:9;14747:22;14682:97;;;14672:107;;14558:227;14844:2;14833:9;14829:18;14816:32;14868:18;14860:6;14857:30;14854:2;;;14900:1;14897;14890:12;14854:2;14920:103;15015:7;15006:6;14995:9;14991:22;14920:103;;15046:429;;15201:2;15189:9;15180:7;15176:23;15172:32;15169:2;;;15217:1;15214;15207:12;15169:2;15252:31;;15303:18;15292:30;;15289:2;;;15335:1;15332;15325:12;15289:2;15355:104;15451:7;15442:6;15431:9;15427:22;15355:104;;15482:502;;;15628:2;15616:9;15607:7;15603:23;15599:32;15596:2;;;15644:1;15641;15634:12;15596:2;15679:31;;15730:18;15719:30;;15716:2;;;15762:1;15759;15752:12;15716:2;15782:78;15852:7;15843:6;15832:9;15828:22;15782:78;;15991:287;;16118:2;16106:9;16097:7;16093:23;16089:32;16086:2;;;16134:1;16131;16124:12;16086:2;16169:1;16186:76;16254:7;16234:9;16186:76;;16285:287;;16412:2;16400:9;16391:7;16387:23;16383:32;16380:2;;;16428:1;16425;16418:12;16380:2;16463:1;16480:76;16548:7;16528:9;16480:76;;16579:436;;;16735:2;16723:9;16714:7;16710:23;16706:32;16703:2;;;16751:1;16748;16741:12;16703:2;16786:1;16803:76;16871:7;16851:9;16803:76;;;16793:86;;16765:120;16916:2;16934:65;16991:7;16982:6;16971:9;16967:22;16934:65;;17022:412;;;17166:2;17154:9;17145:7;17141:23;17137:32;17134:2;;;17182:1;17179;17172:12;17134:2;17217:1;17234:76;17302:7;17282:9;17234:76;;;17224:86;;17196:120;17347:2;17365:53;17410:7;17401:6;17390:9;17386:22;17365:53;;17441:582;;;;17624:3;17612:9;17603:7;17599:23;17595:33;17592:2;;;17641:1;17638;17631:12;17592:2;17676:1;17693:76;17761:7;17741:9;17693:76;;;17683:86;;17655:120;17806:2;17824:53;17869:7;17860:6;17849:9;17845:22;17824:53;;;17814:63;;17785:98;17914:2;17932:75;17999:7;17990:6;17979:9;17975:22;17932:75;;;17922:85;;17893:120;17586:437;;;;;;18030:311;;18169:2;18157:9;18148:7;18144:23;18140:32;18137:2;;;18185:1;18182;18175:12;18137:2;18220:1;18237:88;18317:7;18297:9;18237:88;;18960:241;;19064:2;19052:9;19043:7;19039:23;19035:32;19032:2;;;19080:1;19077;19070:12;19032:2;19115:1;19132:53;19177:7;19157:9;19132:53;;19208:263;;19323:2;19311:9;19302:7;19298:23;19294:32;19291:2;;;19339:1;19336;19329:12;19291:2;19374:1;19391:64;19447:7;19427:9;19391:64;;19478:366;;;19599:2;19587:9;19578:7;19574:23;19570:32;19567:2;;;19615:1;19612;19605:12;19567:2;19650:1;19667:53;19712:7;19692:9;19667:53;;19851:360;;;19969:2;19957:9;19948:7;19944:23;19940:32;19937:2;;;19985:1;19982;19975:12;19937:2;20020:1;20037:53;20082:7;20062:9;20037:53;;20218:416;;;20364:2;20352:9;20343:7;20339:23;20335:32;20332:2;;;20380:1;20377;20370:12;20332:2;20415:1;20432:53;20477:7;20457:9;20432:53;;;20422:63;;20394:97;20522:2;20540:78;20610:7;20601:6;20590:9;20586:22;20540:78;;21058:412;;;21202:2;21190:9;21181:7;21177:23;21173:32;21170:2;;;21218:1;21215;21208:12;21170:2;21253:1;21270:53;21315:7;21295:9;21270:53;;;21260:63;;21232:97;21360:2;21378:76;21446:7;21437:6;21426:9;21422:22;21378:76;;21477:415;;;21622:3;21610:9;21601:7;21597:23;21593:33;21590:2;;;21639:1;21636;21629:12;21590:2;21674:1;21691:53;21736:7;21716:9;21691:53;;;21681:63;;21653:97;21781:2;21799:77;21868:7;21859:6;21848:9;21844:22;21799:77;;21899:366;;;22020:2;22008:9;21999:7;21995:23;21991:32;21988:2;;;22036:1;22033;22026:12;21988:2;22071:1;22088:53;22133:7;22113:9;22088:53;;;22078:63;;22050:97;22178:2;22196:53;22241:7;22232:6;22221:9;22217:22;22196:53;;22273:173;;22360:46;22402:3;22394:6;22360:46;;;-1:-1;;22435:4;22426:14;;22353:93;22455:273;;22614:108;22718:3;22710:6;22614:108;;22737:269;;22870:96;22962:3;22954:6;22870:96;;;-1:-1;;22995:4;22986:14;;22863:143;23015:249;;23138:86;23220:3;23212:6;23138:86;;23273:249;;23396:86;23478:3;23470:6;23396:86;;23531:173;;23618:46;23660:3;23652:6;23618:46;;23910:103;23983:24;24001:5;23983:24;;;23978:3;23971:37;23965:48;;;24417:690;;24562:54;24610:5;24562:54;;;24629:86;24708:6;24703:3;24629:86;;;24622:93;;24736:56;24786:5;24736:56;;;24812:7;24840:1;24825:260;24850:6;24847:1;24844:13;24825:260;;;24917:6;24911:13;24938:63;24997:3;24982:13;24938:63;;;24931:70;;25018:60;25071:6;25018:60;;;25008:70;-1:-1;;24872:1;24865:9;24825:260;;;-1:-1;25098:3;;24541:566;-1:-1;;;;;24541:566;25182:1072;;25385:79;25458:5;25385:79;;;25477:119;25589:6;25584:3;25477:119;;;25470:126;;25619:3;25661:4;25653:6;25649:17;25644:3;25640:27;25688:81;25763:5;25688:81;;;25789:7;25817:1;25802:413;25827:6;25824:1;25821:13;25802:413;;;25889:9;25883:4;25879:20;25874:3;25867:33;25934:6;25928:13;25956:122;26073:4;26058:13;25956:122;;;25948:130;;26095:85;26173:6;26095:85;;;26203:4;26194:14;;;;;26085:95;-1:-1;;25849:1;25842:9;25802:413;;;-1:-1;26228:4;;25364:890;-1:-1;;;;;;;25364:890;26317:866;;26508:73;26575:5;26508:73;;;26594:113;26700:6;26695:3;26594:113;;;26587:120;;26728:75;26797:5;26728:75;;;26823:7;26851:1;26836:325;26861:6;26858:1;26855:13;26836:325;;;26928:6;26922:13;26949:109;27054:3;27039:13;26949:109;;;26942:116;;27075:79;27147:6;27075:79;;;27065:89;-1:-1;;26883:1;26876:9;26836:325;;27240:834;;27421:72;27487:5;27421:72;;;27506:104;27603:6;27598:3;27506:104;;;27499:111;;27631:74;27699:5;27631:74;;;27725:7;27753:1;27738:314;27763:6;27760:1;27757:13;27738:314;;;27830:6;27824:13;27851:99;27946:3;27931:13;27851:99;;;27844:106;;27967:78;28038:6;27967:78;;;27957:88;-1:-1;;27785:1;27778:9;27738:314;;28131:834;;28312:72;28378:5;28312:72;;;28397:104;28494:6;28489:3;28397:104;;;28390:111;;28522:74;28590:5;28522:74;;;28616:7;28644:1;28629:314;28654:6;28651:1;28648:13;28629:314;;;28721:6;28715:13;28742:99;28837:3;28822:13;28742:99;;;28735:106;;28858:78;28929:6;28858:78;;;28848:88;-1:-1;;28676:1;28669:9;28629:314;;29004:690;;29149:54;29197:5;29149:54;;;29216:86;29295:6;29290:3;29216:86;;;29209:93;;29323:56;29373:5;29323:56;;;29399:7;29427:1;29412:260;29437:6;29434:1;29431:13;29412:260;;;29504:6;29498:13;29525:63;29584:3;29569:13;29525:63;;;29518:70;;29605:60;29658:6;29605:60;;;29595:70;-1:-1;;29459:1;29452:9;29412:260;;29733:714;;29886:54;29934:5;29886:54;;;29953:94;30040:6;30035:3;29953:94;;;29946:101;;30068:56;30118:5;30068:56;;;30144:7;30172:1;30157:268;30182:6;30179:1;30176:13;30157:268;;;30249:6;30243:13;30270:71;30337:3;30322:13;30270:71;;;30263:78;;30358:60;30411:6;30358:60;;;30348:70;-1:-1;;30204:1;30197:9;30157:268;;30455:94;30522:21;30537:5;30522:21;;30895:148;30994:43;31013:23;31030:5;31013:23;;;30994:43;;31050:148;31149:43;31168:23;31185:5;31168:23;;31205:152;31306:45;31326:24;31344:5;31326:24;;31364:356;;31492:38;31524:5;31492:38;;;31542:88;31623:6;31618:3;31542:88;;;31535:95;;31635:52;31680:6;31675:3;31668:4;31661:5;31657:16;31635:52;;;31699:16;;;;;31472:248;-1:-1;;31472:248;31727:331;;31831:34;31859:5;31831:34;;;31877:68;31938:6;31933:3;31877:68;;;31870:75;;31950:52;31995:6;31990:3;31983:4;31976:5;31972:16;31950:52;;;32023:29;32045:6;32023:29;;;32014:39;;;;31811:247;-1:-1;;;31811:247;32065:166;32163:62;32219:5;32163:62;;33141:152;33236:51;33281:5;33236:51;;33300:166;33402:58;33454:5;33402:58;;33640:146;33733:47;33774:5;33733:47;;34148:375;;34308:67;34372:2;34367:3;34308:67;;;34408:34;34388:55;;34477:8;34472:2;34463:12;;34456:30;34514:2;34505:12;;34294:229;-1:-1;;34294:229;34532:327;;34692:67;34756:2;34751:3;34692:67;;;34792:29;34772:50;;34850:2;34841:12;;34678:181;-1:-1;;34678:181;34868:370;;35028:67;35092:2;35087:3;35028:67;;;35128:34;35108:55;;35197:3;35192:2;35183:12;;35176:25;35229:2;35220:12;;35014:224;-1:-1;;35014:224;35247:332;;35407:67;35471:2;35466:3;35407:67;;;35507:34;35487:55;;35570:2;35561:12;;35393:186;-1:-1;;35393:186;35588:331;;35748:67;35812:2;35807:3;35748:67;;;35848:33;35828:54;;35910:2;35901:12;;35734:185;-1:-1;;35734:185;35988:1688;36215:23;;35988:1688;;36141:6;36132:16;;;36244:85;36136:3;36215:23;36244:85;;;36163:172;36413:4;36406:5;36402:16;36396:23;36425:71;36490:4;36485:3;36481:14;36467:12;36425:71;;;36345:157;36577:4;36570:5;36566:16;36560:23;36589:127;36710:4;36705:3;36701:14;36687:12;36589:127;;;36512:210;36806:4;36799:5;36795:16;36789:23;36818:71;36883:4;36878:3;36874:14;36860:12;36818:71;;;36732:163;36981:4;36974:5;36970:16;36964:23;36993:71;37058:4;37053:3;37049:14;37035:12;36993:71;;;36905:165;37151:4;37144:5;37140:16;37134:23;37163:73;37228:6;37223:3;37219:16;37205:12;37163:73;;;37080:162;37325:4;37318:5;37314:16;37308:23;37337:73;37402:6;37397:3;37393:16;37379:12;37337:73;;;37252:164;37489:4;37482:5;37478:16;37472:23;37543:3;37537:4;37533:14;37524:6;37519:3;37515:16;37508:40;37563:75;37633:4;37619:12;37563:75;;37742:861;37955:23;;37889:4;37880:14;;;37984:65;37884:3;37955:23;37984:65;;;37909:146;38136:4;38129:5;38125:16;38119:23;38148:92;38234:4;38229:3;38225:14;38211:12;38148:92;;;38065:181;38318:4;38311:5;38307:16;38301:23;38330:89;38413:4;38408:3;38404:14;38390:12;38330:89;;;38256:169;38499:4;38492:5;38488:16;38482:23;38511:71;38576:4;38571:3;38567:14;38553:12;38511:71;;38659:319;38865:23;;38798:4;38789:14;;;38894:63;38793:3;38865:23;38894:63;;39790:632;39999:23;;39931:4;39922:14;;;40028:61;39926:3;39999:23;40028:61;;;39951:144;40170:4;40163:5;40159:16;40153:23;40182:61;40237:4;40232:3;40228:14;40214:12;40182:61;;;40105:144;40328:4;40321:5;40317:16;40311:23;40340:61;40395:4;40390:3;40386:14;40372:12;40340:61;;41156:499;41370:23;;41303:4;41294:14;;;41399:71;41298:3;41370:23;41399:71;;;41323:153;41551:4;41544:5;41540:16;41534:23;41563:71;41628:4;41623:3;41619:14;41605:12;41563:71;;42256:1833;42468:23;;42399:6;42390:16;;;42497:63;42394:3;42468:23;42497:63;;;42421:145;42644:4;42637:5;42633:16;42627:23;42656:57;42707:4;42702:3;42698:14;42684:12;42656:57;;;42576:143;42800:4;42793:5;42789:16;42783:23;42812:57;42863:4;42858:3;42854:14;42840:12;42812:57;;;42729:146;42952:4;42945:5;42941:16;42935:23;42964:113;43071:4;43066:3;43062:14;43048:12;42964:113;;;42885:198;43157:4;43150:5;43146:16;43140:23;43169:107;43270:4;43265:3;43261:14;43247:12;43169:107;;;43093:189;43362:4;43355:5;43351:16;43345:23;43374:87;43453:6;43448:3;43444:16;43430:12;43374:87;;;43292:175;43550:4;43543:5;43539:16;43533:23;43562:90;43644:6;43639:3;43635:16;43621:12;43562:90;;;43477:181;43740:4;43733:5;43729:16;43723:23;43752:107;43851:6;43846:3;43842:16;43828:12;43752:107;;;43668:197;43947:6;43940:5;43936:18;43930:25;43961:107;44060:6;44055:3;44051:16;44037:12;43961:107;;44139:465;44342:23;;44276:4;44267:14;;;44371:57;44271:3;44342:23;44371:57;;;44296:138;44508:4;44501:5;44497:16;44491:23;44520:63;44577:4;44572:3;44568:14;44554:12;44520:63;;46470:1166;46697:23;;46621:4;46612:14;;;46726:61;46616:3;46697:23;46726:61;;;46641:152;46882:4;46875:5;46871:16;46865:23;46894:61;46949:4;46944:3;46940:14;46926:12;46894:61;;;46803:158;47045:4;47038:5;47034:16;47028:23;47057:61;47112:4;47107:3;47103:14;47089:12;47057:61;;;46971:153;47209:4;47202:5;47198:16;47192:23;47221:61;47276:4;47271:3;47267:14;47253:12;47221:61;;;47134:154;47373:4;47366:5;47362:16;47356:23;47385:61;47440:4;47435:3;47431:14;47417:12;47385:61;;;47298:154;47540:4;47533:5;47529:16;47523:23;47552:63;47609:4;47604:3;47600:14;47586:12;47552:63;;47704:1002;47928:23;;47855:4;47846:14;;;47957:105;47850:3;47928:23;47957:105;;;47875:193;48154:4;48147:5;48143:16;48137:23;48166:105;48265:4;48260:3;48256:14;48242:12;48166:105;;;48078:199;48358:4;48351:5;48347:16;48341:23;48370:105;48469:4;48464:3;48460:14;48446:12;48370:105;;;48287:194;48566:4;48559:5;48555:16;48549:23;48578:107;48679:4;48674:3;48670:14;48656:12;48578:107;;48713:123;48813:18;;48807:29;48896:484;49111:23;;49043:4;49034:14;;;49140:63;49038:3;49111:23;49140:63;;51105:465;51308:23;;51242:4;51233:14;;;51337:57;51237:3;51308:23;51337:57;;52078:103;52151:24;52169:5;52151:24;;52306:103;52379:24;52397:5;52379:24;;52782:100;52853:23;52870:5;52853:23;;52889:100;52960:23;52977:5;52960:23;;52996:100;53067:23;53084:5;53067:23;;53103:244;;53222:75;53293:3;53284:6;53222:75;;;-1:-1;53319:2;53310:12;;53210:137;-1:-1;53210:137;53354:553;;53570:93;53659:3;53650:6;53570:93;;;53563:100;;53674:73;53743:3;53734:6;53674:73;;;53769:1;53764:3;53760:11;53753:18;;53789:93;53878:3;53869:6;53789:93;;53914:978;;54228:93;54317:3;54308:6;54228:93;;;54221:100;;54332:73;54401:3;54392:6;54332:73;;;54427:1;54422:3;54418:11;54411:18;;54447:93;54536:3;54527:6;54447:93;;;54440:100;;54551:73;54620:3;54611:6;54551:73;;;54646:1;54641:3;54637:11;54630:18;;54666:93;54755:3;54746:6;54666:93;;;54659:100;;54770:73;54839:3;54830:6;54770:73;;;-1:-1;54865:1;54856:11;;54209:683;-1:-1;;;;;;54209:683;54899:1269;;55285:93;55374:3;55365:6;55285:93;;;55278:100;;55389:73;55458:3;55449:6;55389:73;;;55484:1;55479:3;55475:11;55468:18;;55504:93;55593:3;55584:6;55504:93;;;55497:100;;55608:73;55677:3;55668:6;55608:73;;;55703:1;55698:3;55694:11;55687:18;;55723:93;55812:3;55803:6;55723:93;;;55716:100;;55827:73;55896:3;55887:6;55827:73;;;55922:1;55917:3;55913:11;55906:18;;55942:93;56031:3;56022:6;55942:93;;;55935:100;;56046:73;56115:3;56106:6;56046:73;;;-1:-1;56141:1;56132:11;;55266:902;-1:-1;;;;;;;;55266:902;56175:213;56293:2;56278:18;;56307:71;56282:9;56351:6;56307:71;;56395:312;56535:2;56520:18;;56549:71;56524:9;56593:6;56549:71;;;56631:66;56693:2;56682:9;56678:18;56669:6;56631:66;;56714:435;56888:2;56873:18;;56902:71;56877:9;56946:6;56902:71;;;56984:72;57052:2;57041:9;57037:18;57028:6;56984:72;;;57067;57135:2;57124:9;57120:18;57111:6;57067:72;;57156:361;57324:2;57338:47;;;57309:18;;57399:108;57309:18;57493:6;57399:108;;57524:1283;57998:3;58013:47;;;57983:19;;58074:108;57983:19;58168:6;58074:108;;;58066:116;;58230:9;58224:4;58220:20;58215:2;58204:9;58200:18;58193:48;58255:108;58358:4;58349:6;58255:108;;;58247:116;;58411:9;58405:4;58401:20;58396:2;58385:9;58381:18;58374:48;58436:144;58575:4;58566:6;58436:144;;;58428:152;;58628:9;58622:4;58618:20;58613:2;58602:9;58598:18;58591:48;58653:144;58792:4;58783:6;58653:144;;58814:201;58926:2;58911:18;;58940:65;58915:9;58978:6;58940:65;;59022:263;59165:2;59150:18;;59179:96;59154:9;59248:6;59179:96;;59556:233;59684:2;59669:18;;59698:81;59673:9;59752:6;59698:81;;59796:301;59934:2;59948:47;;;59919:18;;60009:78;59919:18;60073:6;60009:78;;60104:407;60295:2;60309:47;;;60280:18;;60370:131;60280:18;60370:131;;60518:407;60709:2;60723:47;;;60694:18;;60784:131;60694:18;60784:131;;60932:407;61123:2;61137:47;;;61108:18;;61198:131;61108:18;61198:131;;61346:407;61537:2;61551:47;;;61522:18;;61612:131;61522:18;61612:131;;61760:407;61951:2;61965:47;;;61936:18;;62026:131;61936:18;62026:131;;62174:305;62338:2;62323:18;;62352:117;62327:9;62442:6;62352:117;;62486:309;62652:2;62637:18;;62666:119;62641:9;62758:6;62666:119;;62802:314;62970:3;62955:19;;62985:121;62959:9;63079:6;62985:121;;63123:934;63517:3;63502:19;;63532:121;63506:9;63626:6;63532:121;;;63664;63780:3;63769:9;63765:19;63756:6;63664:121;;;63796;63912:3;63901:9;63897:19;63888:6;63796:121;;;63928:119;64042:3;64031:9;64027:19;64018:6;63928:119;;64064:301;64226:2;64211:18;;64240:115;64215:9;64328:6;64240:115;;65000:330;65176:3;65161:19;;65191:129;65165:9;65293:6;65191:129;;65337:330;65513:3;65498:19;;65528:129;65502:9;65630:6;65528:129;;65674:509;65877:2;65862:18;;65891:100;65866:9;65964:6;65891:100;;;66002:80;66078:2;66067:9;66063:18;66054:6;66002:80;;;66093;66169:2;66158:9;66154:18;66145:6;66093:80;;66190:497;66387:2;66372:18;;66401:100;66376:9;66474:6;66401:100;;;66512:80;66588:2;66577:9;66573:18;66564:6;66512:80;;;66603:74;66673:2;66662:9;66658:18;66649:6;66603:74;;66694:1363;67164:3;67149:19;;67179:100;67153:9;67252:6;67179:100;;;67290:80;67366:2;67355:9;67351:18;67342:6;67290:80;;;67381:102;67479:2;67468:9;67464:18;67455:6;67381:102;;;67494:105;67595:2;67584:9;67580:18;67571:6;67494:105;;;67610:127;67732:3;67721:9;67717:19;67708:6;67610:127;;;67748;67870:3;67859:9;67855:19;67846:6;67748:127;;;67886:75;67956:3;67945:9;67941:19;67932:6;67886:75;;;67972;68042:3;68031:9;68027:19;68018:6;67972:75;;68064:981;68455:2;68440:18;;68469:100;68444:9;68542:6;68469:100;;;68617:9;68611:4;68607:20;68602:2;68591:9;68587:18;68580:48;68642:154;68791:4;68782:6;68642:154;;;68634:162;;68844:9;68838:4;68834:20;68829:2;68818:9;68814:18;68807:48;68869:166;69030:4;69021:6;68869:166;;69052:657;69305:2;69290:18;;69319:100;69294:9;69392:6;69319:100;;;69467:9;69461:4;69457:20;69452:2;69441:9;69437:18;69430:48;69492:116;69603:4;69594:6;69492:116;;;69484:124;;69619:80;69695:2;69684:9;69680:18;69671:6;69619:80;;69716:482;69937:2;69922:18;;69951:100;69926:9;70024:6;69951:100;;;70062:126;70184:2;70173:9;70169:18;70160:6;70062:126;;70205:810;70526:3;70511:19;;70541:100;70515:9;70614:6;70541:100;;;70652:126;70774:2;70763:9;70759:18;70750:6;70652:126;;;70789:80;70865:2;70854:9;70850:18;70841:6;70789:80;;;70880:125;71000:3;70989:9;70985:19;70976:6;70880:125;;71515:509;71718:2;71703:18;;71732:100;71707:9;71805:6;71732:100;;;71843:80;71919:2;71908:9;71904:18;71895:6;71843:80;;72031:497;72228:2;72213:18;;72242:100;72217:9;72315:6;72242:100;;;72353:80;72429:2;72418:9;72414:18;72405:6;72353:80;;72535:559;72763:2;72748:18;;72777:100;72752:9;72850:6;72777:100;;;72888:80;72964:2;72953:9;72949:18;72940:6;72888:80;;;72979:105;73080:2;73069:9;73065:18;73056:6;72979:105;;73661:601;73910:2;73895:18;;73924:100;73899:9;73997:6;73924:100;;;74035:80;74111:2;74100:9;74096:18;74087:6;74035:80;;;74126:126;74248:2;74237:9;74233:18;74224:6;74126:126;;74269:321;74441:2;74426:18;;74455:125;74430:9;74553:6;74455:125;;74913:516;75155:2;75140:18;;75169:119;75144:9;75261:6;75169:119;;75436:301;75598:2;75583:18;;75612:115;75587:9;75700:6;75612:115;;75744:213;75862:2;75847:18;;75876:71;75851:9;75920:6;75876:71;;75964:256;76026:2;76020:9;76052:17;;;76127:18;76112:34;;76148:22;;;76109:62;76106:2;;;76184:1;76181;76174:12;76106:2;76200;76193:22;76004:216;;-1:-1;76004:216;76227:329;;76411:18;76403:6;76400:30;76397:2;;;76443:1;76440;76433:12;76397:2;-1:-1;76478:4;76466:17;;;76531:15;;76334:222;77541:317;;77680:18;77672:6;77669:30;77666:2;;;77712:1;77709;77702:12;77666:2;-1:-1;77843:4;77779;77756:17;;;;77775:9;77752:33;77833:15;;77603:255;77865:151;77989:4;77980:14;;77937:79;78893:137;78996:12;;78967:63;80989:178;81107:19;;;81156:4;81147:14;;81100:67;82895:91;;82957:24;82975:5;82957:24;;82993:85;83059:13;83052:21;;83035:43;83085:144;83157:66;83146:78;;83129:100;83236:144;83308:66;83297:78;;83280:100;83387:72;83449:5;83432:27;83466:116;;83553:24;83571:5;83553:24;;83709:138;83787:5;83793:49;83787:5;83793:49;;83854:152;83939:5;83945:56;83939:5;83945:56;;84166:130;84240:5;84246:45;84240:5;84246:45;;84303:113;84376:34;84365:46;;84348:68;84423:121;84496:42;84485:54;;84468:76;84630:88;84702:10;84691:22;;84674:44;84725:96;84797:18;84786:30;;84769:52;84828:104;84900:26;84889:38;;84872:60;85566:138;;85659:40;85693:5;85659:40;;85711:152;;85811:47;85852:5;85811:47;;86023:130;;86112:36;86142:5;86112:36;;86161:145;86242:6;86237:3;86232;86219:30;-1:-1;86298:1;86280:16;;86273:27;86212:94;86315:268;86380:1;86387:101;86401:6;86398:1;86395:13;86387:101;;;86468:11;;;86462:18;86449:11;;;86442:39;86423:2;86416:10;86387:101;;;86503:6;86500:1;86497:13;86494:2;;;-1:-1;;86568:1;86550:16;;86543:27;86364:219;86832:97;86920:2;86900:14;86916:7;86896:28;;86880:49;86937:107;87022:1;87015:5;87012:12;87002:2;;87028:9;87051:114;87143:1;87136:5;87133:12;87123:2;;87149:9;87290:103;87371:1;87364:5;87361:12;87351:2;;87377:9;87400:117;87469:24;87487:5;87469:24;;;87462:5;87459:35;87449:2;;87508:1;87505;87498:12;87524:111;87590:21;87605:5;87590:21;;87642:167;87736:49;87779:5;87736:49;;87984:110;88069:1;88062:5;88059:12;88049:2;;88085:1;88082;88075:12;88101:117;88193:1;88186:5;88183:12;88173:2;;88209:1;88206;88199:12;88346:106;88427:1;88420:5;88417:12;88407:2;;88443:1;88440;88433:12;88459:117;88528:24;88546:5;88528:24;;88583:117;88652:24;88670:5;88652:24;;88707:115;88775:23;88792:5;88775:23;;88829:115;88897:23;88914:5;88897:23;",
2231
2231
  "source": "/*\n\n Copyright 2019 dYdX Trading Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.7;\npragma experimental ABIEncoderV2;\n\nimport { DolomiteMargin } from \"../protocol/DolomiteMargin.sol\";\nimport { Account } from \"../protocol/lib/Account.sol\";\nimport { Interest } from \"../protocol/lib/Interest.sol\";\nimport { Storage } from \"../protocol/lib/Storage.sol\";\nimport { Types } from \"../protocol/lib/Types.sol\";\nimport { TestOperationImpl } from \"./TestOperationImpl.sol\";\n\n\ncontract TestDolomiteMargin is DolomiteMargin {\n\n // ============ Constructor ============\n\n constructor (\n Storage.RiskParams memory rp,\n Storage.RiskLimits memory rl\n )\n public\n DolomiteMargin(rp, rl)\n {}\n\n // ============ Testing Functions ============\n\n function setAccountBalance(\n Account.Info memory account,\n uint256 market,\n Types.Par memory newPar\n )\n public\n {\n _requireValidMarket(market);\n TestOperationImpl.setPar(g_state, account, market, newPar);\n }\n\n function setAccountStatus(\n Account.Info memory account,\n Account.Status status\n )\n public\n {\n g_state.accounts[account.owner][account.number].status = status;\n }\n\n function setMarketIndex(\n uint256 market,\n Interest.Index memory index\n )\n public\n {\n Interest.Index memory oldIndex = g_state.markets[market].index;\n\n if (index.borrow == 0) {\n index.borrow = oldIndex.borrow;\n }\n if (index.supply == 0) {\n index.supply = oldIndex.supply;\n }\n\n g_state.markets[market].index = index;\n }\n}\n",
2232
- "sourcePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestDolomiteMargin.sol",
2232
+ "sourcePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/testing/TestDolomiteMargin.sol",
2233
2233
  "ast": {
2234
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestDolomiteMargin.sol",
2234
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/testing/TestDolomiteMargin.sol",
2235
2235
  "exportedSymbols": {
2236
2236
  "TestDolomiteMargin": [
2237
2237
  35727
@@ -2261,7 +2261,7 @@
2261
2261
  "src": "627:33:93"
2262
2262
  },
2263
2263
  {
2264
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/DolomiteMargin.sol",
2264
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/DolomiteMargin.sol",
2265
2265
  "file": "../protocol/DolomiteMargin.sol",
2266
2266
  "id": 35605,
2267
2267
  "nodeType": "ImportDirective",
@@ -2277,7 +2277,7 @@
2277
2277
  "unitAlias": ""
2278
2278
  },
2279
2279
  {
2280
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol",
2280
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Account.sol",
2281
2281
  "file": "../protocol/lib/Account.sol",
2282
2282
  "id": 35607,
2283
2283
  "nodeType": "ImportDirective",
@@ -2293,7 +2293,7 @@
2293
2293
  "unitAlias": ""
2294
2294
  },
2295
2295
  {
2296
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol",
2296
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Interest.sol",
2297
2297
  "file": "../protocol/lib/Interest.sol",
2298
2298
  "id": 35609,
2299
2299
  "nodeType": "ImportDirective",
@@ -2309,7 +2309,7 @@
2309
2309
  "unitAlias": ""
2310
2310
  },
2311
2311
  {
2312
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol",
2312
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Storage.sol",
2313
2313
  "file": "../protocol/lib/Storage.sol",
2314
2314
  "id": 35611,
2315
2315
  "nodeType": "ImportDirective",
@@ -2325,7 +2325,7 @@
2325
2325
  "unitAlias": ""
2326
2326
  },
2327
2327
  {
2328
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol",
2328
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Types.sol",
2329
2329
  "file": "../protocol/lib/Types.sol",
2330
2330
  "id": 35613,
2331
2331
  "nodeType": "ImportDirective",
@@ -2341,7 +2341,7 @@
2341
2341
  "unitAlias": ""
2342
2342
  },
2343
2343
  {
2344
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestOperationImpl.sol",
2344
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/testing/TestOperationImpl.sol",
2345
2345
  "file": "./TestOperationImpl.sol",
2346
2346
  "id": 35615,
2347
2347
  "nodeType": "ImportDirective",
@@ -3715,7 +3715,7 @@
3715
3715
  "src": "603:1593:93"
3716
3716
  },
3717
3717
  "legacyAST": {
3718
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestDolomiteMargin.sol",
3718
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/testing/TestDolomiteMargin.sol",
3719
3719
  "exportedSymbols": {
3720
3720
  "TestDolomiteMargin": [
3721
3721
  35727
@@ -3745,7 +3745,7 @@
3745
3745
  "src": "627:33:93"
3746
3746
  },
3747
3747
  {
3748
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/DolomiteMargin.sol",
3748
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/DolomiteMargin.sol",
3749
3749
  "file": "../protocol/DolomiteMargin.sol",
3750
3750
  "id": 35605,
3751
3751
  "nodeType": "ImportDirective",
@@ -3761,7 +3761,7 @@
3761
3761
  "unitAlias": ""
3762
3762
  },
3763
3763
  {
3764
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol",
3764
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Account.sol",
3765
3765
  "file": "../protocol/lib/Account.sol",
3766
3766
  "id": 35607,
3767
3767
  "nodeType": "ImportDirective",
@@ -3777,7 +3777,7 @@
3777
3777
  "unitAlias": ""
3778
3778
  },
3779
3779
  {
3780
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol",
3780
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Interest.sol",
3781
3781
  "file": "../protocol/lib/Interest.sol",
3782
3782
  "id": 35609,
3783
3783
  "nodeType": "ImportDirective",
@@ -3793,7 +3793,7 @@
3793
3793
  "unitAlias": ""
3794
3794
  },
3795
3795
  {
3796
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol",
3796
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Storage.sol",
3797
3797
  "file": "../protocol/lib/Storage.sol",
3798
3798
  "id": 35611,
3799
3799
  "nodeType": "ImportDirective",
@@ -3809,7 +3809,7 @@
3809
3809
  "unitAlias": ""
3810
3810
  },
3811
3811
  {
3812
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol",
3812
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Types.sol",
3813
3813
  "file": "../protocol/lib/Types.sol",
3814
3814
  "id": 35613,
3815
3815
  "nodeType": "ImportDirective",
@@ -3825,7 +3825,7 @@
3825
3825
  "unitAlias": ""
3826
3826
  },
3827
3827
  {
3828
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestOperationImpl.sol",
3828
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/testing/TestOperationImpl.sol",
3829
3829
  "file": "./TestOperationImpl.sol",
3830
3830
  "id": 35615,
3831
3831
  "nodeType": "ImportDirective",
@@ -5251,16 +5251,16 @@
5251
5251
  }
5252
5252
  },
5253
5253
  "links": {
5254
- "AdminImpl": "0xFC628dd79137395F3C9744e33b1c5DE554D94882",
5255
- "OperationImpl": "0xb09bCc172050fBd4562da8b229Cf3E45Dc3045A6",
5254
+ "AdminImpl": "0xb09bCc172050fBd4562da8b229Cf3E45Dc3045A6",
5255
+ "OperationImpl": "0xFC628dd79137395F3C9744e33b1c5DE554D94882",
5256
5256
  "TestOperationImpl": "0x5f8e26fAcC23FA4cbd87b8d9Dbbd33D5047abDE1"
5257
5257
  },
5258
5258
  "address": "0x21a59654176f2689d12E828B77a783072CD26680",
5259
- "transactionHash": "0x8954681a4c67fb09749e99c7165d7f060779415856a346d067f9f9de2e0cfdad"
5259
+ "transactionHash": "0x3fdf9af6c3fa67f579040cb75278a3f5d245ecea0ab525900074d4deced00dde"
5260
5260
  }
5261
5261
  },
5262
5262
  "schemaVersion": "3.0.23",
5263
- "updatedAt": "2022-02-04T01:55:01.254Z",
5263
+ "updatedAt": "2022-02-07T07:18:45.405Z",
5264
5264
  "devdoc": {
5265
5265
  "methods": {
5266
5266
  "isOwner()": {