@dolomite-exchange/dolomite-margin 0.2.2 → 0.2.3

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 (150) 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 +31 -322
  6. package/build/contracts/AdvancedMath.json +7 -7
  7. package/build/contracts/AmmRebalancerProxy.json +32 -77
  8. package/build/contracts/Babylonian.json +1 -1
  9. package/build/contracts/Bits.json +9 -9
  10. package/build/contracts/Cache.json +13 -13
  11. package/build/contracts/ChainlinkPriceOracleV1.json +16 -16
  12. package/build/contracts/Context.json +1 -1
  13. package/build/contracts/CustomTestToken.json +9 -9
  14. package/build/contracts/Decimal.json +9 -9
  15. package/build/contracts/DelayedMultiSig.json +9 -9
  16. package/build/contracts/DolomiteAmmERC20.json +11 -11
  17. package/build/contracts/DolomiteAmmFactory.json +14 -52
  18. package/build/contracts/DolomiteAmmLibrary.json +24 -24
  19. package/build/contracts/DolomiteAmmPair.json +27 -27
  20. package/build/contracts/DolomiteAmmRouterProxy.json +30 -363
  21. package/build/contracts/DolomiteMargin.json +23 -78
  22. package/build/contracts/DoubleExponentInterestSetter.json +14 -20
  23. package/build/contracts/EnumerableSet.json +7 -7
  24. package/build/contracts/ErroringOmiseToken.json +9 -9
  25. package/build/contracts/ErroringToken.json +10 -10
  26. package/build/contracts/Events.json +17 -17
  27. package/build/contracts/Exchange.json +15 -15
  28. package/build/contracts/Expiry.json +34 -173
  29. package/build/contracts/Getters.json +34 -34
  30. package/build/contracts/IAutoTrader.json +9 -9
  31. package/build/contracts/ICallee.json +7 -7
  32. package/build/contracts/IChainlinkAggregator.json +5 -5
  33. package/build/contracts/IDolomiteAmmERC20.json +5 -5
  34. package/build/contracts/IDolomiteAmmFactory.json +9 -9
  35. package/build/contracts/IDolomiteAmmPair.json +9 -9
  36. package/build/contracts/IDolomiteMargin.json +23 -23
  37. package/build/contracts/IERC20.json +1 -1
  38. package/build/contracts/IERC20Detailed.json +5 -5
  39. package/build/contracts/IExchangeWrapper.json +5 -5
  40. package/build/contracts/IExpiry.json +9 -9
  41. package/build/contracts/IInterestSetter.json +7 -7
  42. package/build/contracts/ILiquidationCallback.json +7 -7
  43. package/build/contracts/IMakerOracle.json +5 -5
  44. package/build/contracts/IOasisDex.json +5 -5
  45. package/build/contracts/IPriceOracle.json +7 -7
  46. package/build/contracts/IRecyclable.json +9 -9
  47. package/build/contracts/ITransferProxy.json +5 -5
  48. package/build/contracts/IUniswapV2Callee.json +5 -5
  49. package/build/contracts/IUniswapV2Factory.json +5 -5
  50. package/build/contracts/IUniswapV2Pair.json +5 -5
  51. package/build/contracts/IUniswapV2Router.json +5 -5
  52. package/build/contracts/IWETH.json +5 -5
  53. package/build/contracts/Interest.json +15 -15
  54. package/build/contracts/LiquidateOrVaporizeImpl.json +31 -82
  55. package/build/contracts/LiquidatorProxyHelper.json +23 -23
  56. package/build/contracts/LiquidatorProxyV1.json +31 -37
  57. package/build/contracts/LiquidatorProxyV1WithAmm.json +32 -149
  58. package/build/contracts/Math.json +1 -1
  59. package/build/contracts/Migrations.json +8 -14
  60. package/build/contracts/Monetary.json +7 -7
  61. package/build/contracts/MultiCall.json +8 -14
  62. package/build/contracts/MultiSig.json +7 -7
  63. package/build/contracts/OmiseToken.json +8 -8
  64. package/build/contracts/OnlyDolomiteMargin.json +11 -11
  65. package/build/contracts/Operation.json +15 -15
  66. package/build/contracts/OperationImpl.json +39 -47
  67. package/build/contracts/Ownable.json +1 -1
  68. package/build/contracts/PartiallyDelayedMultiSig.json +9 -9
  69. package/build/contracts/PayableProxy.json +17 -23
  70. package/build/contracts/Permission.json +11 -11
  71. package/build/contracts/PolynomialInterestSetter.json +13 -13
  72. package/build/contracts/RecyclableTokenProxy.json +25 -25
  73. package/build/contracts/ReentrancyGuard.json +1 -1
  74. package/build/contracts/Require.json +7 -7
  75. package/build/contracts/SafeERC20.json +1 -1
  76. package/build/contracts/SafeETH.json +7 -7
  77. package/build/contracts/SafeMath.json +1 -1
  78. package/build/contracts/SignedOperationProxy.json +21 -104
  79. package/build/contracts/SimpleFeeOwner.json +18 -63
  80. package/build/contracts/State.json +9 -9
  81. package/build/contracts/Storage.json +3222 -3222
  82. package/build/contracts/TestAmmRebalancerProxy.json +32 -58
  83. package/build/contracts/TestAutoTrader.json +22 -22
  84. package/build/contracts/TestBtcUsdChainlinkAggregator.json +11 -11
  85. package/build/contracts/TestCallee.json +19 -19
  86. package/build/contracts/TestChainlinkPriceOracleV1.json +10 -94
  87. package/build/contracts/TestCounter.json +7 -7
  88. package/build/contracts/TestDaiUsdChainlinkAggregator.json +11 -11
  89. package/build/contracts/TestDolomiteMargin.json +21 -21
  90. package/build/contracts/TestDoubleExponentInterestSetter.json +10 -10
  91. package/build/contracts/TestEthUsdChainlinkAggregator.json +11 -11
  92. package/build/contracts/TestExchangeWrapper.json +10 -10
  93. package/build/contracts/TestInterestSetter.json +12 -12
  94. package/build/contracts/TestLib.json +22 -22
  95. package/build/contracts/TestLinkUsdChainlinkAggregator.json +11 -11
  96. package/build/contracts/TestLiquidateCallback.json +15 -15
  97. package/build/contracts/TestLrcEthChainlinkAggregator.json +11 -11
  98. package/build/contracts/TestMakerOracle.json +10 -10
  99. package/build/contracts/TestMaticUsdChainlinkAggregator.json +11 -11
  100. package/build/contracts/TestOasisDex.json +12 -12
  101. package/build/contracts/TestOperationImpl.json +15 -15
  102. package/build/contracts/TestPolynomialInterestSetter.json +10 -10
  103. package/build/contracts/TestPriceAggregator.json +9 -9
  104. package/build/contracts/TestPriceOracle.json +12 -12
  105. package/build/contracts/TestRecyclableToken.json +9 -9
  106. package/build/contracts/TestSimpleCallee.json +15 -15
  107. package/build/contracts/TestToken.json +9 -9
  108. package/build/contracts/TestTrader.json +17 -17
  109. package/build/contracts/TestUniswapAmmRebalancerProxy.json +16 -16
  110. package/build/contracts/TestUsdcUsdChainlinkAggregator.json +11 -11
  111. package/build/contracts/TestWETH.json +9 -9
  112. package/build/contracts/Time.json +9 -9
  113. package/build/contracts/Token.json +9 -9
  114. package/build/contracts/TokenA.json +10 -10
  115. package/build/contracts/TokenB.json +10 -10
  116. package/build/contracts/TokenC.json +10 -10
  117. package/build/contracts/TokenD.json +10 -10
  118. package/build/contracts/TokenE.json +10 -10
  119. package/build/contracts/TokenF.json +10 -10
  120. package/build/contracts/TransferProxy.json +22 -28
  121. package/build/contracts/TypedSignature.json +9 -9
  122. package/build/contracts/Types.json +9 -9
  123. package/build/contracts/UQ112x112.json +7 -7
  124. package/build/contracts/UniswapV2ERC20.json +7 -7
  125. package/build/contracts/UniswapV2Factory.json +12 -12
  126. package/build/contracts/UniswapV2Library.json +20 -20
  127. package/build/contracts/UniswapV2Pair.json +17 -17
  128. package/build/contracts/UniswapV2Router02.json +16 -16
  129. package/build/contracts/WETH9.json +1 -1
  130. package/contracts/protocol/impl/artifacts/OperationImpl.json +80 -0
  131. package/contracts/protocol/impl/artifacts/OperationImpl_metadata.json +193 -0
  132. package/contracts/protocol/lib/Storage.sol +7 -0
  133. package/dist/build/published_contracts/AdminImpl.json +1 -1
  134. package/dist/build/published_contracts/AmmRebalancerProxy.json +1 -1
  135. package/dist/build/published_contracts/ChainlinkPriceOracleV1.json +1 -1
  136. package/dist/build/published_contracts/DolomiteAmmFactory.json +1 -1
  137. package/dist/build/published_contracts/DolomiteAmmRouterProxy.json +1 -1
  138. package/dist/build/published_contracts/DoubleExponentInterestSetter.json +1 -1
  139. package/dist/build/published_contracts/Expiry.json +1 -1
  140. package/dist/build/published_contracts/LiquidatorProxyV1.json +2 -2
  141. package/dist/build/published_contracts/LiquidatorProxyV1WithAmm.json +1 -1
  142. package/dist/build/published_contracts/MultiCall.json +1 -1
  143. package/dist/build/published_contracts/PayableProxy.json +2 -2
  144. package/dist/build/published_contracts/SignedOperationProxy.json +2 -2
  145. package/dist/build/published_contracts/SimpleFeeOwner.json +1 -1
  146. package/dist/build/published_contracts/TransferProxy.json +1 -1
  147. package/dist/src/modules/operate/AccountOperation.d.ts +8 -2
  148. package/dist/src/modules/operate/AccountOperation.js +7 -7
  149. package/dist/src/modules/operate/AccountOperation.js.map +1 -1
  150. package/package.json +2 -2
@@ -559,15 +559,15 @@
559
559
  "type": "function"
560
560
  }
561
561
  ],
562
- "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dolomiteMargin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiryRampTime\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"time\",\"type\":\"uint32\"}],\"name\":\"ExpirySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expiryRampTime\",\"type\":\"uint256\"}],\"name\":\"LogExpiryRampTimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidAccountOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidAccountNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"LogLiquidationCallbackFailure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidAccountOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidAccountNumber\",\"type\":\"uint256\"}],\"name\":\"LogLiquidationCallbackSuccess\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"minTimeDelta\",\"type\":\"uint32\"}],\"name\":\"LogSenderApproved\",\"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\":[],\"name\":\"DOLOMITE_MARGIN\",\"outputs\":[{\"internalType\":\"contract IDolomiteMargin\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"minTimeDelta\",\"type\":\"uint32\"}],\"name\":\"approveSender\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"callFunction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"g_approvedSender\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"g_expiryRampTime\",\"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\":\"getExpiry\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"heldMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"expiry\",\"type\":\"uint32\"}],\"name\":\"getSpreadAdjustedPrices\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Price\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inputMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputMarketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"makerAccount\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"oldInputPar\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newInputPar\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"inputWei\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getTradeCost\",\"outputs\":[{\"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\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newExpiryRampTime\",\"type\":\"uint256\"}],\"name\":\"ownerSetExpiryRampTime\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"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\":{\"author\":\"dYdX * Expiry contract that also allows approved senders to set expiry to be 28 days in the future.\",\"methods\":{\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"Expiry\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/traders/Expiry.sol\":\"Expiry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol\":{\"keccak256\":\"0xfc9ce2f5a274ec66668c133f09fe213bc1a6a739f9147f4357a3493094de8deb\",\"urls\":[\"bzz-raw://e45442587f111fa0d85dd85a4e07993f5fecd1afce4f457ed21441f8b0abb937\",\"dweb:/ipfs/QmaNq3j3PUwb8Wrx2gEmFFsVa2GByDEkDCPGdwo2qvMeKh\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IExpiry.sol\":{\"keccak256\":\"0xd7613bcef3a7384660aa4aeae9905faafbb0425b423080e5dcc0a6df4ee26cf6\",\"urls\":[\"bzz-raw://98b4cd8852fec0d6fe8bb92575974ca36d80d1a75f342c45292f2bfb62de1b67\",\"dweb:/ipfs/QmPmWrw5NhxGBqC3HByiAeV6BtTJtPXLnhvTSLEMKedj2z\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/traders/Expiry.sol\":{\"keccak256\":\"0x596b74e3ec30c00aa39bbc05e5af6f00cf14293635e8477455722cbfad763b04\",\"urls\":[\"bzz-raw://9c384090ce485fe937b0131041440d791326f4350a250c807a497801f965eff5\",\"dweb:/ipfs/QmaqVthazVi6PXa7pHpwGr5wpq5m3CdURSNfXtt1nEAKqY\"]},\"/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\":\"0x3e95a2b461f3f0cc4000d71d5c7bb6b1222788cfac1c66faad029ccaa1859d1e\",\"urls\":[\"bzz-raw://cad9773b4a1b196ea3d71129b5bd5679df7db601555a6b29ac111d38c36b00f0\",\"dweb:/ipfs/QmThFva71eLSVmBHHxn34zP7BUCJZDD6wMJHxEkKNWkkvv\"]},\"/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/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/ILiquidationCallback.sol\":{\"keccak256\":\"0x371f5287f1f3de144179f485ee617460ce52559685ce8214f4ee55bc605009ed\",\"urls\":[\"bzz-raw://ecb24b11427988292a722d078ffa2f1e390214bd71b5a1772ac304ddb20b2480\",\"dweb:/ipfs/QmdX6uJLKBiNTvUWU3MS7W3juRJXgmX1J8n572mh8ZexNA\"]},\"/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/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/Interest.sol\":{\"keccak256\":\"0xbb17eb41ff805df51e8d637ef2a368782fdc5f085889c2d847713484f8f1967b\",\"urls\":[\"bzz-raw://538001d60d625695754159a8f716877f72217899fdab296d4725dc44bdbe1895\",\"dweb:/ipfs/QmbRm1WpPpaynnwTdmwB5M7H1cZQEtRAuExqtJ3g9SUiVp\"]},\"/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/Storage.sol\":{\"keccak256\":\"0xca1826cf783a2d48a5a45309ca92cbaee46d2caec7b5a7c154b2dfda06af8975\",\"urls\":[\"bzz-raw://e13679dfa92725d990e3b0656f4eca4b0d09616e5c2729a3bc0276923d6887e1\",\"dweb:/ipfs/QmVc8teCJ6rKutZLyvk568hCw1vYj2nC6DwyxRgswHu71k\"]},\"/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\"]},\"@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\"]}},\"version\":1}",
563
- "bytecode": "0x60806040523480156200001157600080fd5b50604051620032e0380380620032e08339810160408190526200003491620000e2565b8160006200004a6001600160e01b03620000be16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b0392909216919091179055600455506200015b565b3390565b8051620000cf8162000136565b92915050565b8051620000cf8162000150565b60008060408385031215620000f657600080fd5b6000620001048585620000c2565b92505060206200011785828601620000d5565b9150509250929050565b60006001600160a01b038216620000cf565b90565b620001418162000121565b81146200014d57600080fd5b50565b620001418162000133565b613175806200016b6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80638b4187131161008c578063b139654211610066578063b1396542146101af578063d8862484146101d0578063f2fde38b146101e5578063f64e654c146101f8576100df565b80638b418713146101725780638da5cb5b146101855780638f32d59b1461019a576100df565b806320bed572116100bd57806320bed57214610135578063448f70651461014a578063715018a61461016a576100df565b80630bce846a146100e457806315c14a4a1461010d5780631be7dd8314610122575b600080fd5b6100f76100f23660046125d4565b61020b565b6040516101049190612f26565b60405180910390f35b61011561022e565b6040516101049190612dee565b6100f761013036600461278c565b61024a565b610148610143366004612673565b610294565b005b61015d610158366004612816565b6102a3565b6040516101049190612e4d565b6101486104de565b61014861018036600461260e565b610594565b61018d61064d565b6040516101049190612d75565b6101a2610669565b6040516101049190612de0565b6101c26101bd3660046128e1565b6106a7565b604051610104929190612e76565b6101d86106e8565b6040516101049190612e91565b6101486101f33660046125b6565b6106ee565b6101486102063660046127f8565b610738565b600360209081526000928352604080842090915290825290205463ffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b815173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040808320828601518452825280832084845290915290205463ffffffff165b92915050565b61029f3383836107b2565b5050565b6102ab61217d565b60015433906103149073ffffffffffffffffffffffffffffffffffffffff1682147f4f6e6c79446f6c6f6d6974654d617267696e00000000000000000000000000007f4f6e6c7920446f6c6f6d6974652063616e2063616c6c2066756e6374696f6e0084610853565b61031d8461094f565b1561034f57604080516080810190915260018082526020820190815260200160008152602001600081525091506104d1565b600080848060200190516103669190810190612924565b9150915060006103768b8461024a565b90506103d88163ffffffff16600014157f45787069727900000000000000000000000000000000000000000000000000007f457870697279206e6f74207365740000000000000000000000000000000000008e600001518f602001518861095b565b6104406103e3610a53565b63ffffffff168263ffffffff1611157f45787069727900000000000000000000000000000000000000000000000000007f426f72726f77206e6f74207965742065787069726564000000000000000000008463ffffffff16610a63565b6104a18263ffffffff168263ffffffff1611157f45787069727900000000000000000000000000000000000000000000000000007f4578706972792070617374206d617845787069727900000000000000000000008463ffffffff16610a63565b6001546104cb9073ffffffffffffffffffffffffffffffffffffffff168e8e8e8d8d8d8a89610ac5565b94505050505b5098975050505050505050565b6104e6610669565b610525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e3d565b60405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60015433906105fd9073ffffffffffffffffffffffffffffffffffffffff1682147f4f6e6c79446f6c6f6d6974654d617267696e00000000000000000000000000007f4f6e6c7920446f6c6f6d6974652063616e2063616c6c2066756e6374696f6e0084610853565b60008280602001905161061391908101906126a3565b9050600081600181111561062357fe5b141561063a5783516106359084610f11565b610646565b83516106469084611170565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff1661068b6111bb565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6106af6121a6565b6106b76121a6565b6001546106dc9073ffffffffffffffffffffffffffffffffffffffff168686866111bf565b91509150935093915050565b60045481565b6106f6610669565b61072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e3d565b6107358161144d565b50565b610740610669565b610776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e3d565b7fd08f204a092297d87c6a408c8d66cb1b189734e8284e655f896717b45a93a536816040516107a59190612e91565b60405180910390a1600455565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600360209081526040808320938616835292905281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8416179055517f6d39d55c693043fe0327fddb80edde3a40fb0419a6299d29592cc2f11e728b9c9061084690859085908590612d83565b60405180910390a1505050565b836109495761086183611527565b7f3a2000000000000000000000000000000000000000000000000000000000000061088b84611527565b7f203c0000000000000000000000000000000000000000000000000000000000006108b5856115ff565b6040516108eb9594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001612c01565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261051c91600401612dfc565b50505050565b6020810151155b919050565b85610a4b5761096985611527565b7f3a2000000000000000000000000000000000000000000000000000000000000061099386611527565b7f203c0000000000000000000000000000000000000000000000000000000000006109bd876115ff565b7f2c200000000000000000000000000000000000000000000000000000000000006109e788611776565b7f2c20000000000000000000000000000000000000000000000000000000000000610a1189611776565b6040516108eb999897969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001612cdb565b505050505050565b6000610a5e42611885565b905090565b8361094957610a7183611527565b7f3a20000000000000000000000000000000000000000000000000000000000000610a9b84611527565b7f203c0000000000000000000000000000000000000000000000000000000000006108b585611776565b610acd61217d565b610ad561217d565b610add6121b9565b6040517fc190c2ec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d169063c190c2ec90610b31908c908e90600401612e5b565b604080518083038186803b158015610b4857600080fd5b505afa158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b8091908101906127da565b9050610b8b866118dc565b15610cdf57610bde858c147f45787069727900000000000000000000000000000000000000000000000000007f696e7075744d61726b6574206d69736d617463680000000000000000000000008e610a63565b610c49610bea886118f2565b157f45787069727900000000000000000000000000000000000000000000000000007f426f72726f77732063616e6e6f74206265206f766572706169640000000000008a602001516fffffffffffffffffffffffffffffffff16610a63565b610c528861191a565b610c5857fe5b610cb1610c64826118dc565b7f45787069727900000000000000000000000000000000000000000000000000007f436f6c6c61746572616c206d75737420626520706f73697469766500000000008d8560200151611943565b610cbe8c878c8e88611a07565b9150610cc987611a80565b15610cda57610cda89866000611a9a565b610e2b565b610d2d858b147f45787069727900000000000000000000000000000000000000000000000000007f6f75747075744d61726b6574206d69736d6174636800000000000000000000008d610a63565b610d98610d398861191a565b157f45787069727900000000000000000000000000000000000000000000000000007f436f6c6c61746572616c2063616e6e6f74206265206f766572757365640000008a602001516fffffffffffffffffffffffffffffffff16610a63565b610da1886118f2565b610da757fe5b610e00610db382611b3d565b7f45787069727900000000000000000000000000000000000000000000000000007f426f72726f7773206d757374206265206e6567617469766500000000000000008d8560200151611943565b610e0d8c878d8d88611b54565b9150806020015182606001511415610e2b57610e2b89866000611a9a565b60208101516060830151610e889180821115917f4578706972790000000000000000000000000000000000000000000000000000917f6f75747075744d61726b657420746f6f20736d616c6c000000000000000000009190611943565b8051825115159015151415610e9957fe5b610f02898c8714610eaa578c610eac565b8b5b8d8814610eb95788610ed4565b60408051808201909152855115158152606086015160208201525b888f8a14610efb576040805180820190915287511515815260608801516020820152610efd565b8a5b611bb2565b509a9950505050505050505050565b6000606082806020019051610f2991908101906126c1565b90925090506000826001811115610f3c57fe5b14610f4357fe5b60005b815181101561064657610f576121d0565b828281518110610f6357fe5b602002602001015190508573ffffffffffffffffffffffffffffffffffffffff1681600001516000015173ffffffffffffffffffffffffffffffffffffffff161461100e5780515173ffffffffffffffffffffffffffffffffffffffff9081166000908152600360209081526040808320938a168352929052205463ffffffff1680158061100057508063ffffffff16826040015163ffffffff16105b1561100c575050611168565b505b604081015163ffffffff16158015906110d35750600154815160208301516040517f47d1b53c0000000000000000000000000000000000000000000000000000000081526110d39373ffffffffffffffffffffffffffffffffffffffff16926347d1b53c9261107f92600401612e5b565b604080518083038186803b15801561109657600080fd5b505afa1580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110ce91908101906127bc565b61191a565b15611152578060600151806110fd57506110f58160000151826020015161024a565b63ffffffff16155b1561114d576000611136611131836040015163ffffffff1661111d610a53565b63ffffffff16611e0690919063ffffffff16565b611885565b905061114b8260000151836020015183611a9a565b505b611166565b611166816000015182602001516000611a9a565b505b600101610f46565b600061117a6121b9565b8280602001905161118e9190810190612709565b909250905060018260018111156111a157fe5b146111a857fe5b61094984826000015183602001516107b2565b3390565b6111c76121a6565b6111cf6121a6565b6111d76121a6565b6040517fd24c48bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88169063d24c48bc9061122b9089908990600401612ebf565b60206040518083038186803b15801561124357600080fd5b505afa158015611257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061127b919081019061276e565b905060006112a58563ffffffff16611291610a53565b63ffffffff16611e4c90919063ffffffff16565b90506004548110156112c5576112c2826000015182600454611e8e565b82525b6112cd6121a6565b6040517f8928378e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a1690638928378e9061131f908b90600401612e91565b60206040518083038186803b15801561133757600080fd5b505afa15801561134b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061136f919081019061276e565b90506113796121a6565b6040517f8928378e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b1690638928378e906113cb908b90600401612e91565b60206040518083038186803b1580156113e357600080fd5b505afa1580156113f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061141b919081019061276e565b905061143c61142e826000015186611eb8565b82519063ffffffff611e0616565b815290999098509650505050505050565b73ffffffffffffffffffffffffffffffffffffffff811661149a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e0d565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6060808260405160200161153b9190612be0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b80156115e45781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909101908290829081106115a757fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016156115df5760010181529050610956565b61156e565b5060408051600080825260208201909252905b509392505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b8160008151811061164b57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b8160018151811061168c57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b60148110156115f757600281026116d7600f8516611ed1565b8382602903815181106116e657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350611728600f8516611ed1565b83826028038151811061173757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c916001016116be565b6060816117b7575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610956565b8160005b81156117cf57600101600a820491506117bb565b6060816040519080825280601f01601f1916602001820160405280156117fc576020820181803883390190505b508593509050815b801561187c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b82828151811061184257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611804565b50949350505050565b60008161028e63ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743332000000000000000000000084610a63565b8051600090801561028e57505060200151151590565b8051600090801561028e575050602001516fffffffffffffffffffffffffffffffff16151590565b805160009015801561028e575050602001516fffffffffffffffffffffffffffffffff16151590565b846106465761195184611527565b7f3a2000000000000000000000000000000000000000000000000000000000000061197b85611527565b7f203c0000000000000000000000000000000000000000000000000000000000006119a586611776565b7f2c200000000000000000000000000000000000000000000000000000000000006119cf87611776565b6040516108eb97969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001612c5f565b611a0f61217d565b611a176121a6565b611a1f6121a6565b611a2b888787876111bf565b915091506000611a48886020015183600001518560000151611e8e565b604080516080810190915260008082529192509060208201905b81526020016000815260200191909152925050505b95945050505050565b602001516fffffffffffffffffffffffffffffffff161590565b825173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040808320828701805185529083528184208685529092529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff85161790558451905191517ecee2201664da23900ada76f5e96bcae576e5d7253b36f10dc1b379597d521b92610846929186908690612dab565b805160009015801561028e57505060200151151590565b611b5c61217d565b611b646121a6565b611b6c6121a6565b611b78888787876111bf565b915091506000611b95886020015184600001518460000151611ef3565b604080516080810190915260018152909150602081016000611a62565b8451611bd39073ffffffffffffffffffffffffffffffffffffffff16611f87565b15610646578451602086015160405160009260609273ffffffffffffffffffffffffffffffffffffffff909116917f839c1faa0000000000000000000000000000000000000000000000000000000091611c37918a908a908a908a90602401612eda565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611cc09190612bf5565b6000604051808303816000865af19150503d8060008114611cfd576040519150601f19603f3d011682016040523d82523d6000602084013e611d02565b606091505b50915091508115611d6857866000015173ffffffffffffffffffffffffffffffffffffffff167f5418b0c788a0e055245b87cdebed5cb5af6e38862954e736cf2c11165cfac3f58860200151604051611d5b9190612e91565b60405180910390a2611dfd565b604481511015611d875750604080516020810190915260008152611da4565b60048101905080806020019051611da19190810190612739565b90505b866000015173ffffffffffffffffffffffffffffffffffffffff167f969c8b99a23d857754fd7c4d782add205dc6127f8a50f606803b6076a50a2345886020015183604051611df4929190612e9f565b60405180910390a25b50505050505050565b600082820183811015611e45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e1d565b9392505050565b6000611e4583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fc0565b6000611eb082611ea4868663ffffffff61200616565b9063ffffffff61205a16565b949350505050565b6000611e45838360000151670de0b6b3a7640000611e8e565b6000600a821015611ee957506030810160f81b610956565b5060570160f81b90565b6000831580611f00575082155b15611f1757611f1060008361205a565b9050611e45565b6000611f29858563ffffffff61200616565b9050611a77611f546001611f486002611ea4888463ffffffff611e4c16565b9063ffffffff611e0616565b611f64838663ffffffff61209c16565b1015611f71576000611f74565b60015b60ff16611f48838663ffffffff61205a16565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611eb0575050151592915050565b60008184841115611ffe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c9190612dfc565b505050900390565b6000826120155750600061028e565b8282028284828161202257fe5b0414611e45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e2d565b6000611e4583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120de565b6000611e4583836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525061212f565b60008183612119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c9190612dfc565b50600083858161212557fe5b0495945050505050565b6000818361216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c9190612dfc565b5082848161217457fe5b06949350505050565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b6040518060200160405280600081525090565b604080518082019091526000808252602082015290565b60405180608001604052806121e36121b9565b81526000602082018190526040820181905260609091015290565b803561028e816130ed565b805161028e816130ed565b600082601f83011261222557600080fd5b815161223861223382612f5b565b612f34565b915081818352602084019350602081019050838560a084028201111561225d57600080fd5b60005b8381101561228b578161227388826124b1565b84525060209092019160a09190910190600101612260565b5050505092915050565b803561028e81613101565b805161028e81613101565b600082601f8301126122bc57600080fd5b81356122ca61223382612f7c565b915080825260208301602083018583830111156122e657600080fd5b6122f1838284613083565b50505092915050565b805161028e8161310a565b600082601f83011261231657600080fd5b815161232461223382612f7c565b9150808252602083016020830185838301111561234057600080fd5b6122f183828461308f565b60006020828403121561235d57600080fd5b6123676020612f34565b905060006123758484612595565b82525092915050565b60006040828403121561239057600080fd5b61239a6040612f34565b905060006123a88484612209565b82525060206123b984848301612595565b60208301525092915050565b6000604082840312156123d757600080fd5b6123e16040612f34565b905060006123ef84846121fe565b82525060206123b98484830161258a565b60006040828403121561241257600080fd5b61241c6040612f34565b9050600061242a8484612295565b82525060206123b984848301612574565b60006040828403121561244d57600080fd5b6124576040612f34565b9050600061246584846122a0565b82525060206123b98484830161257f565b60006040828403121561248857600080fd5b6124926040612f34565b905060006124a08484612209565b82525060206123b9848483016125ab565b600060a082840312156124c357600080fd5b6124cd6080612f34565b905060006124db848461237e565b82525060406124ec84848301612595565b6020830152506060612500848285016125ab565b6040830152506080612514848285016122a0565b60608301525092915050565b60006040828403121561253257600080fd5b61253c6040612f34565b905060006123ef8484612295565b60006040828403121561255c57600080fd5b6125666040612f34565b905060006123a884846122a0565b803561028e81613117565b805161028e81613117565b803561028e81613120565b805161028e81613120565b803561028e81613129565b805161028e81613129565b6000602082840312156125c857600080fd5b6000611eb084846121fe565b600080604083850312156125e757600080fd5b60006125f385856121fe565b9250506020612604858286016121fe565b9150509250929050565b60008060006080848603121561262357600080fd5b600061262f86866121fe565b9350506020612640868287016123c5565b925050606084013567ffffffffffffffff81111561265d57600080fd5b612669868287016122ab565b9150509250925092565b6000806040838503121561268657600080fd5b600061269285856121fe565b9250506020612604858286016125a0565b6000602082840312156126b557600080fd5b6000611eb084846122fa565b600080604083850312156126d457600080fd5b60006126e085856122fa565b925050602083015167ffffffffffffffff8111156126fd57600080fd5b61260485828601612214565b6000806060838503121561271c57600080fd5b600061272885856122fa565b925050602061260485828601612476565b60006020828403121561274b57600080fd5b815167ffffffffffffffff81111561276257600080fd5b611eb084828501612305565b60006020828403121561278057600080fd5b6000611eb0848461234b565b6000806060838503121561279f57600080fd5b60006127ab85856123c5565b92505060406126048582860161258a565b6000604082840312156127ce57600080fd5b6000611eb0848461243b565b6000604082840312156127ec57600080fd5b6000611eb0848461254a565b60006020828403121561280a57600080fd5b6000611eb0848461258a565b6000806000806000806000806101a0898b03121561283357600080fd5b600061283f8b8b61258a565b98505060206128508b828c0161258a565b97505060406128618b828c016123c5565b96505060806128728b828c016123c5565b95505060c06128838b828c01612400565b9450506101006128958b828c01612400565b9350506101406128a78b828c01612520565b92505061018089013567ffffffffffffffff8111156128c557600080fd5b6128d18b828c016122ab565b9150509295985092959890939650565b6000806000606084860312156128f657600080fd5b6000612902868661258a565b93505060206129138682870161258a565b9250506040612669868287016125a0565b6000806040838503121561293757600080fd5b60006129438585612595565b9250506020612604858286016125ab565b61295d81612fcf565b82525050565b61295d81612fda565b61295d61297882612fdf565b613029565b61295d61297882613004565b61295d61297882613029565b60006129a082612fc2565b6129aa8185610956565b93506129ba81856020860161308f565b9290920192915050565b61295d8161306d565b61295d81613078565b60006129e182612fc2565b6129eb8185612fc6565b93506129fb81856020860161308f565b612a04816130bb565b9093019392505050565b6000612a1b602683612fc6565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612a7a601b83612fc6565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000612ab3602183612fc6565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612b12602083612fc6565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b80516080830190612b4f8482612963565b506020820151612b6260208501826129cd565b506040820151612b7560408501826129cd565b5060608201516109496060850182612bce565b80516040830190612b998482612954565b5060208201516109496020850182612bce565b805160208301906109498482612bce565b80516040830190612b998482612963565b61295d81613029565b61295d81613064565b6000612bec8284612989565b50602001919050565b6000611e458284612995565b6000612c0d8289612995565b9150612c19828861297d565b600282019150612c298287612995565b9150612c35828661297d565b600282019150612c458285612995565b9150612c51828461296c565b506001019695505050505050565b6000612c6b828b612995565b9150612c77828a61297d565b600282019150612c878289612995565b9150612c93828861297d565b600282019150612ca38287612995565b9150612caf828661297d565b600282019150612cbf8285612995565b9150612ccb828461296c565b5060010198975050505050505050565b6000612ce7828d612995565b9150612cf3828c61297d565b600282019150612d03828b612995565b9150612d0f828a61297d565b600282019150612d1f8289612995565b9150612d2b828861297d565b600282019150612d3b8287612995565b9150612d47828661297d565b600282019150612d578285612995565b9150612d63828461296c565b506001019a9950505050505050505050565b6020810161028e8284612954565b60608101612d918286612954565b612d9e6020830185612954565b611eb06040830184612bd7565b60808101612db98287612954565b612dc66020830186612bce565b612dd36040830185612bce565b611a776060830184612bd7565b6020810161028e8284612963565b6020810161028e82846129c4565b60208082528101611e4581846129d6565b6020808252810161028e81612a0e565b6020808252810161028e81612a6d565b6020808252810161028e81612aa6565b6020808252810161028e81612b05565b6080810161028e8284612b3e565b60608101612e698285612b88565b611e456040830184612bce565b60408101612e848285612bac565b611e456020830184612bac565b6020810161028e8284612bce565b60408101612ead8285612bce565b8181036020830152611eb081846129d6565b60408101612ecd8285612bce565b611e456020830184612bce565b60e08101612ee88288612bce565b612ef56020830187612bce565b612f026040830186612bbd565b612f0f6080830185612bce565b612f1c60a0830184612bbd565b9695505050505050565b6020810161028e8284612bd7565b60405181810167ffffffffffffffff81118282101715612f5357600080fd5b604052919050565b600067ffffffffffffffff821115612f7257600080fd5b5060209081020190565b600067ffffffffffffffff821115612f9357600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b5190565b90815260200190565b600061028e8261304b565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b80610956816130e3565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b600061028e82612fcf565b600061028e8261302c565b82818337506000910152565b60005b838110156130aa578181015183820152602001613092565b838111156109495750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6002811061073557fe5b6130f681612fcf565b811461073557600080fd5b6130f681612fda565b6002811061073557600080fd5b6130f681613036565b6130f681613029565b6130f68161306456fea365627a7a72315820eb791c5950cb6f4c661e9600f6fe19c519d04b43ce74f0e97382488d34c0bc986c6578706572696d656e74616cf564736f6c63430005100040",
564
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80638b4187131161008c578063b139654211610066578063b1396542146101af578063d8862484146101d0578063f2fde38b146101e5578063f64e654c146101f8576100df565b80638b418713146101725780638da5cb5b146101855780638f32d59b1461019a576100df565b806320bed572116100bd57806320bed57214610135578063448f70651461014a578063715018a61461016a576100df565b80630bce846a146100e457806315c14a4a1461010d5780631be7dd8314610122575b600080fd5b6100f76100f23660046125d4565b61020b565b6040516101049190612f26565b60405180910390f35b61011561022e565b6040516101049190612dee565b6100f761013036600461278c565b61024a565b610148610143366004612673565b610294565b005b61015d610158366004612816565b6102a3565b6040516101049190612e4d565b6101486104de565b61014861018036600461260e565b610594565b61018d61064d565b6040516101049190612d75565b6101a2610669565b6040516101049190612de0565b6101c26101bd3660046128e1565b6106a7565b604051610104929190612e76565b6101d86106e8565b6040516101049190612e91565b6101486101f33660046125b6565b6106ee565b6101486102063660046127f8565b610738565b600360209081526000928352604080842090915290825290205463ffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b815173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040808320828601518452825280832084845290915290205463ffffffff165b92915050565b61029f3383836107b2565b5050565b6102ab61217d565b60015433906103149073ffffffffffffffffffffffffffffffffffffffff1682147f4f6e6c79446f6c6f6d6974654d617267696e00000000000000000000000000007f4f6e6c7920446f6c6f6d6974652063616e2063616c6c2066756e6374696f6e0084610853565b61031d8461094f565b1561034f57604080516080810190915260018082526020820190815260200160008152602001600081525091506104d1565b600080848060200190516103669190810190612924565b9150915060006103768b8461024a565b90506103d88163ffffffff16600014157f45787069727900000000000000000000000000000000000000000000000000007f457870697279206e6f74207365740000000000000000000000000000000000008e600001518f602001518861095b565b6104406103e3610a53565b63ffffffff168263ffffffff1611157f45787069727900000000000000000000000000000000000000000000000000007f426f72726f77206e6f74207965742065787069726564000000000000000000008463ffffffff16610a63565b6104a18263ffffffff168263ffffffff1611157f45787069727900000000000000000000000000000000000000000000000000007f4578706972792070617374206d617845787069727900000000000000000000008463ffffffff16610a63565b6001546104cb9073ffffffffffffffffffffffffffffffffffffffff168e8e8e8d8d8d8a89610ac5565b94505050505b5098975050505050505050565b6104e6610669565b610525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e3d565b60405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60015433906105fd9073ffffffffffffffffffffffffffffffffffffffff1682147f4f6e6c79446f6c6f6d6974654d617267696e00000000000000000000000000007f4f6e6c7920446f6c6f6d6974652063616e2063616c6c2066756e6374696f6e0084610853565b60008280602001905161061391908101906126a3565b9050600081600181111561062357fe5b141561063a5783516106359084610f11565b610646565b83516106469084611170565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff1661068b6111bb565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6106af6121a6565b6106b76121a6565b6001546106dc9073ffffffffffffffffffffffffffffffffffffffff168686866111bf565b91509150935093915050565b60045481565b6106f6610669565b61072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e3d565b6107358161144d565b50565b610740610669565b610776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e3d565b7fd08f204a092297d87c6a408c8d66cb1b189734e8284e655f896717b45a93a536816040516107a59190612e91565b60405180910390a1600455565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600360209081526040808320938616835292905281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8416179055517f6d39d55c693043fe0327fddb80edde3a40fb0419a6299d29592cc2f11e728b9c9061084690859085908590612d83565b60405180910390a1505050565b836109495761086183611527565b7f3a2000000000000000000000000000000000000000000000000000000000000061088b84611527565b7f203c0000000000000000000000000000000000000000000000000000000000006108b5856115ff565b6040516108eb9594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001612c01565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261051c91600401612dfc565b50505050565b6020810151155b919050565b85610a4b5761096985611527565b7f3a2000000000000000000000000000000000000000000000000000000000000061099386611527565b7f203c0000000000000000000000000000000000000000000000000000000000006109bd876115ff565b7f2c200000000000000000000000000000000000000000000000000000000000006109e788611776565b7f2c20000000000000000000000000000000000000000000000000000000000000610a1189611776565b6040516108eb999897969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001612cdb565b505050505050565b6000610a5e42611885565b905090565b8361094957610a7183611527565b7f3a20000000000000000000000000000000000000000000000000000000000000610a9b84611527565b7f203c0000000000000000000000000000000000000000000000000000000000006108b585611776565b610acd61217d565b610ad561217d565b610add6121b9565b6040517fc190c2ec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d169063c190c2ec90610b31908c908e90600401612e5b565b604080518083038186803b158015610b4857600080fd5b505afa158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b8091908101906127da565b9050610b8b866118dc565b15610cdf57610bde858c147f45787069727900000000000000000000000000000000000000000000000000007f696e7075744d61726b6574206d69736d617463680000000000000000000000008e610a63565b610c49610bea886118f2565b157f45787069727900000000000000000000000000000000000000000000000000007f426f72726f77732063616e6e6f74206265206f766572706169640000000000008a602001516fffffffffffffffffffffffffffffffff16610a63565b610c528861191a565b610c5857fe5b610cb1610c64826118dc565b7f45787069727900000000000000000000000000000000000000000000000000007f436f6c6c61746572616c206d75737420626520706f73697469766500000000008d8560200151611943565b610cbe8c878c8e88611a07565b9150610cc987611a80565b15610cda57610cda89866000611a9a565b610e2b565b610d2d858b147f45787069727900000000000000000000000000000000000000000000000000007f6f75747075744d61726b6574206d69736d6174636800000000000000000000008d610a63565b610d98610d398861191a565b157f45787069727900000000000000000000000000000000000000000000000000007f436f6c6c61746572616c2063616e6e6f74206265206f766572757365640000008a602001516fffffffffffffffffffffffffffffffff16610a63565b610da1886118f2565b610da757fe5b610e00610db382611b3d565b7f45787069727900000000000000000000000000000000000000000000000000007f426f72726f7773206d757374206265206e6567617469766500000000000000008d8560200151611943565b610e0d8c878d8d88611b54565b9150806020015182606001511415610e2b57610e2b89866000611a9a565b60208101516060830151610e889180821115917f4578706972790000000000000000000000000000000000000000000000000000917f6f75747075744d61726b657420746f6f20736d616c6c000000000000000000009190611943565b8051825115159015151415610e9957fe5b610f02898c8714610eaa578c610eac565b8b5b8d8814610eb95788610ed4565b60408051808201909152855115158152606086015160208201525b888f8a14610efb576040805180820190915287511515815260608801516020820152610efd565b8a5b611bb2565b509a9950505050505050505050565b6000606082806020019051610f2991908101906126c1565b90925090506000826001811115610f3c57fe5b14610f4357fe5b60005b815181101561064657610f576121d0565b828281518110610f6357fe5b602002602001015190508573ffffffffffffffffffffffffffffffffffffffff1681600001516000015173ffffffffffffffffffffffffffffffffffffffff161461100e5780515173ffffffffffffffffffffffffffffffffffffffff9081166000908152600360209081526040808320938a168352929052205463ffffffff1680158061100057508063ffffffff16826040015163ffffffff16105b1561100c575050611168565b505b604081015163ffffffff16158015906110d35750600154815160208301516040517f47d1b53c0000000000000000000000000000000000000000000000000000000081526110d39373ffffffffffffffffffffffffffffffffffffffff16926347d1b53c9261107f92600401612e5b565b604080518083038186803b15801561109657600080fd5b505afa1580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110ce91908101906127bc565b61191a565b15611152578060600151806110fd57506110f58160000151826020015161024a565b63ffffffff16155b1561114d576000611136611131836040015163ffffffff1661111d610a53565b63ffffffff16611e0690919063ffffffff16565b611885565b905061114b8260000151836020015183611a9a565b505b611166565b611166816000015182602001516000611a9a565b505b600101610f46565b600061117a6121b9565b8280602001905161118e9190810190612709565b909250905060018260018111156111a157fe5b146111a857fe5b61094984826000015183602001516107b2565b3390565b6111c76121a6565b6111cf6121a6565b6111d76121a6565b6040517fd24c48bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88169063d24c48bc9061122b9089908990600401612ebf565b60206040518083038186803b15801561124357600080fd5b505afa158015611257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061127b919081019061276e565b905060006112a58563ffffffff16611291610a53565b63ffffffff16611e4c90919063ffffffff16565b90506004548110156112c5576112c2826000015182600454611e8e565b82525b6112cd6121a6565b6040517f8928378e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a1690638928378e9061131f908b90600401612e91565b60206040518083038186803b15801561133757600080fd5b505afa15801561134b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061136f919081019061276e565b90506113796121a6565b6040517f8928378e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b1690638928378e906113cb908b90600401612e91565b60206040518083038186803b1580156113e357600080fd5b505afa1580156113f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061141b919081019061276e565b905061143c61142e826000015186611eb8565b82519063ffffffff611e0616565b815290999098509650505050505050565b73ffffffffffffffffffffffffffffffffffffffff811661149a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e0d565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6060808260405160200161153b9190612be0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b80156115e45781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909101908290829081106115a757fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016156115df5760010181529050610956565b61156e565b5060408051600080825260208201909252905b509392505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b8160008151811061164b57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b8160018151811061168c57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b60148110156115f757600281026116d7600f8516611ed1565b8382602903815181106116e657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350611728600f8516611ed1565b83826028038151811061173757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c916001016116be565b6060816117b7575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610956565b8160005b81156117cf57600101600a820491506117bb565b6060816040519080825280601f01601f1916602001820160405280156117fc576020820181803883390190505b508593509050815b801561187c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b82828151811061184257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611804565b50949350505050565b60008161028e63ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743332000000000000000000000084610a63565b8051600090801561028e57505060200151151590565b8051600090801561028e575050602001516fffffffffffffffffffffffffffffffff16151590565b805160009015801561028e575050602001516fffffffffffffffffffffffffffffffff16151590565b846106465761195184611527565b7f3a2000000000000000000000000000000000000000000000000000000000000061197b85611527565b7f203c0000000000000000000000000000000000000000000000000000000000006119a586611776565b7f2c200000000000000000000000000000000000000000000000000000000000006119cf87611776565b6040516108eb97969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001612c5f565b611a0f61217d565b611a176121a6565b611a1f6121a6565b611a2b888787876111bf565b915091506000611a48886020015183600001518560000151611e8e565b604080516080810190915260008082529192509060208201905b81526020016000815260200191909152925050505b95945050505050565b602001516fffffffffffffffffffffffffffffffff161590565b825173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040808320828701805185529083528184208685529092529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff85161790558451905191517ecee2201664da23900ada76f5e96bcae576e5d7253b36f10dc1b379597d521b92610846929186908690612dab565b805160009015801561028e57505060200151151590565b611b5c61217d565b611b646121a6565b611b6c6121a6565b611b78888787876111bf565b915091506000611b95886020015184600001518460000151611ef3565b604080516080810190915260018152909150602081016000611a62565b8451611bd39073ffffffffffffffffffffffffffffffffffffffff16611f87565b15610646578451602086015160405160009260609273ffffffffffffffffffffffffffffffffffffffff909116917f839c1faa0000000000000000000000000000000000000000000000000000000091611c37918a908a908a908a90602401612eda565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611cc09190612bf5565b6000604051808303816000865af19150503d8060008114611cfd576040519150601f19603f3d011682016040523d82523d6000602084013e611d02565b606091505b50915091508115611d6857866000015173ffffffffffffffffffffffffffffffffffffffff167f5418b0c788a0e055245b87cdebed5cb5af6e38862954e736cf2c11165cfac3f58860200151604051611d5b9190612e91565b60405180910390a2611dfd565b604481511015611d875750604080516020810190915260008152611da4565b60048101905080806020019051611da19190810190612739565b90505b866000015173ffffffffffffffffffffffffffffffffffffffff167f969c8b99a23d857754fd7c4d782add205dc6127f8a50f606803b6076a50a2345886020015183604051611df4929190612e9f565b60405180910390a25b50505050505050565b600082820183811015611e45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e1d565b9392505050565b6000611e4583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fc0565b6000611eb082611ea4868663ffffffff61200616565b9063ffffffff61205a16565b949350505050565b6000611e45838360000151670de0b6b3a7640000611e8e565b6000600a821015611ee957506030810160f81b610956565b5060570160f81b90565b6000831580611f00575082155b15611f1757611f1060008361205a565b9050611e45565b6000611f29858563ffffffff61200616565b9050611a77611f546001611f486002611ea4888463ffffffff611e4c16565b9063ffffffff611e0616565b611f64838663ffffffff61209c16565b1015611f71576000611f74565b60015b60ff16611f48838663ffffffff61205a16565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611eb0575050151592915050565b60008184841115611ffe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c9190612dfc565b505050900390565b6000826120155750600061028e565b8282028284828161202257fe5b0414611e45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e2d565b6000611e4583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120de565b6000611e4583836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525061212f565b60008183612119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c9190612dfc565b50600083858161212557fe5b0495945050505050565b6000818361216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c9190612dfc565b5082848161217457fe5b06949350505050565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b6040518060200160405280600081525090565b604080518082019091526000808252602082015290565b60405180608001604052806121e36121b9565b81526000602082018190526040820181905260609091015290565b803561028e816130ed565b805161028e816130ed565b600082601f83011261222557600080fd5b815161223861223382612f5b565b612f34565b915081818352602084019350602081019050838560a084028201111561225d57600080fd5b60005b8381101561228b578161227388826124b1565b84525060209092019160a09190910190600101612260565b5050505092915050565b803561028e81613101565b805161028e81613101565b600082601f8301126122bc57600080fd5b81356122ca61223382612f7c565b915080825260208301602083018583830111156122e657600080fd5b6122f1838284613083565b50505092915050565b805161028e8161310a565b600082601f83011261231657600080fd5b815161232461223382612f7c565b9150808252602083016020830185838301111561234057600080fd5b6122f183828461308f565b60006020828403121561235d57600080fd5b6123676020612f34565b905060006123758484612595565b82525092915050565b60006040828403121561239057600080fd5b61239a6040612f34565b905060006123a88484612209565b82525060206123b984848301612595565b60208301525092915050565b6000604082840312156123d757600080fd5b6123e16040612f34565b905060006123ef84846121fe565b82525060206123b98484830161258a565b60006040828403121561241257600080fd5b61241c6040612f34565b9050600061242a8484612295565b82525060206123b984848301612574565b60006040828403121561244d57600080fd5b6124576040612f34565b9050600061246584846122a0565b82525060206123b98484830161257f565b60006040828403121561248857600080fd5b6124926040612f34565b905060006124a08484612209565b82525060206123b9848483016125ab565b600060a082840312156124c357600080fd5b6124cd6080612f34565b905060006124db848461237e565b82525060406124ec84848301612595565b6020830152506060612500848285016125ab565b6040830152506080612514848285016122a0565b60608301525092915050565b60006040828403121561253257600080fd5b61253c6040612f34565b905060006123ef8484612295565b60006040828403121561255c57600080fd5b6125666040612f34565b905060006123a884846122a0565b803561028e81613117565b805161028e81613117565b803561028e81613120565b805161028e81613120565b803561028e81613129565b805161028e81613129565b6000602082840312156125c857600080fd5b6000611eb084846121fe565b600080604083850312156125e757600080fd5b60006125f385856121fe565b9250506020612604858286016121fe565b9150509250929050565b60008060006080848603121561262357600080fd5b600061262f86866121fe565b9350506020612640868287016123c5565b925050606084013567ffffffffffffffff81111561265d57600080fd5b612669868287016122ab565b9150509250925092565b6000806040838503121561268657600080fd5b600061269285856121fe565b9250506020612604858286016125a0565b6000602082840312156126b557600080fd5b6000611eb084846122fa565b600080604083850312156126d457600080fd5b60006126e085856122fa565b925050602083015167ffffffffffffffff8111156126fd57600080fd5b61260485828601612214565b6000806060838503121561271c57600080fd5b600061272885856122fa565b925050602061260485828601612476565b60006020828403121561274b57600080fd5b815167ffffffffffffffff81111561276257600080fd5b611eb084828501612305565b60006020828403121561278057600080fd5b6000611eb0848461234b565b6000806060838503121561279f57600080fd5b60006127ab85856123c5565b92505060406126048582860161258a565b6000604082840312156127ce57600080fd5b6000611eb0848461243b565b6000604082840312156127ec57600080fd5b6000611eb0848461254a565b60006020828403121561280a57600080fd5b6000611eb0848461258a565b6000806000806000806000806101a0898b03121561283357600080fd5b600061283f8b8b61258a565b98505060206128508b828c0161258a565b97505060406128618b828c016123c5565b96505060806128728b828c016123c5565b95505060c06128838b828c01612400565b9450506101006128958b828c01612400565b9350506101406128a78b828c01612520565b92505061018089013567ffffffffffffffff8111156128c557600080fd5b6128d18b828c016122ab565b9150509295985092959890939650565b6000806000606084860312156128f657600080fd5b6000612902868661258a565b93505060206129138682870161258a565b9250506040612669868287016125a0565b6000806040838503121561293757600080fd5b60006129438585612595565b9250506020612604858286016125ab565b61295d81612fcf565b82525050565b61295d81612fda565b61295d61297882612fdf565b613029565b61295d61297882613004565b61295d61297882613029565b60006129a082612fc2565b6129aa8185610956565b93506129ba81856020860161308f565b9290920192915050565b61295d8161306d565b61295d81613078565b60006129e182612fc2565b6129eb8185612fc6565b93506129fb81856020860161308f565b612a04816130bb565b9093019392505050565b6000612a1b602683612fc6565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612a7a601b83612fc6565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000612ab3602183612fc6565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612b12602083612fc6565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b80516080830190612b4f8482612963565b506020820151612b6260208501826129cd565b506040820151612b7560408501826129cd565b5060608201516109496060850182612bce565b80516040830190612b998482612954565b5060208201516109496020850182612bce565b805160208301906109498482612bce565b80516040830190612b998482612963565b61295d81613029565b61295d81613064565b6000612bec8284612989565b50602001919050565b6000611e458284612995565b6000612c0d8289612995565b9150612c19828861297d565b600282019150612c298287612995565b9150612c35828661297d565b600282019150612c458285612995565b9150612c51828461296c565b506001019695505050505050565b6000612c6b828b612995565b9150612c77828a61297d565b600282019150612c878289612995565b9150612c93828861297d565b600282019150612ca38287612995565b9150612caf828661297d565b600282019150612cbf8285612995565b9150612ccb828461296c565b5060010198975050505050505050565b6000612ce7828d612995565b9150612cf3828c61297d565b600282019150612d03828b612995565b9150612d0f828a61297d565b600282019150612d1f8289612995565b9150612d2b828861297d565b600282019150612d3b8287612995565b9150612d47828661297d565b600282019150612d578285612995565b9150612d63828461296c565b506001019a9950505050505050505050565b6020810161028e8284612954565b60608101612d918286612954565b612d9e6020830185612954565b611eb06040830184612bd7565b60808101612db98287612954565b612dc66020830186612bce565b612dd36040830185612bce565b611a776060830184612bd7565b6020810161028e8284612963565b6020810161028e82846129c4565b60208082528101611e4581846129d6565b6020808252810161028e81612a0e565b6020808252810161028e81612a6d565b6020808252810161028e81612aa6565b6020808252810161028e81612b05565b6080810161028e8284612b3e565b60608101612e698285612b88565b611e456040830184612bce565b60408101612e848285612bac565b611e456020830184612bac565b6020810161028e8284612bce565b60408101612ead8285612bce565b8181036020830152611eb081846129d6565b60408101612ecd8285612bce565b611e456020830184612bce565b60e08101612ee88288612bce565b612ef56020830187612bce565b612f026040830186612bbd565b612f0f6080830185612bce565b612f1c60a0830184612bbd565b9695505050505050565b6020810161028e8284612bd7565b60405181810167ffffffffffffffff81118282101715612f5357600080fd5b604052919050565b600067ffffffffffffffff821115612f7257600080fd5b5060209081020190565b600067ffffffffffffffff821115612f9357600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b5190565b90815260200190565b600061028e8261304b565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b80610956816130e3565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b600061028e82612fcf565b600061028e8261302c565b82818337506000910152565b60005b838110156130aa578181015183820152602001613092565b838111156109495750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6002811061073557fe5b6130f681612fcf565b811461073557600080fd5b6130f681612fda565b6002811061073557600080fd5b6130f681613036565b6130f681613029565b6130f68161306456fea365627a7a72315820eb791c5950cb6f4c661e9600f6fe19c519d04b43ce74f0e97382488d34c0bc986c6578706572696d656e74616cf564736f6c63430005100040",
562
+ "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dolomiteMargin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiryRampTime\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"time\",\"type\":\"uint32\"}],\"name\":\"ExpirySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expiryRampTime\",\"type\":\"uint256\"}],\"name\":\"LogExpiryRampTimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidAccountOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidAccountNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"LogLiquidationCallbackFailure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidAccountOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidAccountNumber\",\"type\":\"uint256\"}],\"name\":\"LogLiquidationCallbackSuccess\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"minTimeDelta\",\"type\":\"uint32\"}],\"name\":\"LogSenderApproved\",\"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\":[],\"name\":\"DOLOMITE_MARGIN\",\"outputs\":[{\"internalType\":\"contract IDolomiteMargin\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"minTimeDelta\",\"type\":\"uint32\"}],\"name\":\"approveSender\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"callFunction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"g_approvedSender\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"g_expiryRampTime\",\"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\":\"getExpiry\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"heldMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"expiry\",\"type\":\"uint32\"}],\"name\":\"getSpreadAdjustedPrices\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Price\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inputMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputMarketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"makerAccount\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"oldInputPar\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newInputPar\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"inputWei\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getTradeCost\",\"outputs\":[{\"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\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newExpiryRampTime\",\"type\":\"uint256\"}],\"name\":\"ownerSetExpiryRampTime\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"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\":{\"author\":\"dYdX * Expiry contract that also allows approved senders to set expiry to be 28 days in the future.\",\"methods\":{\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"Expiry\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/traders/Expiry.sol\":\"Expiry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/helpers/OnlyDolomiteMargin.sol\":{\"keccak256\":\"0xfc9ce2f5a274ec66668c133f09fe213bc1a6a739f9147f4357a3493094de8deb\",\"urls\":[\"bzz-raw://e45442587f111fa0d85dd85a4e07993f5fecd1afce4f457ed21441f8b0abb937\",\"dweb:/ipfs/QmaNq3j3PUwb8Wrx2gEmFFsVa2GByDEkDCPGdwo2qvMeKh\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/IExpiry.sol\":{\"keccak256\":\"0xd7613bcef3a7384660aa4aeae9905faafbb0425b423080e5dcc0a6df4ee26cf6\",\"urls\":[\"bzz-raw://98b4cd8852fec0d6fe8bb92575974ca36d80d1a75f342c45292f2bfb62de1b67\",\"dweb:/ipfs/QmPmWrw5NhxGBqC3HByiAeV6BtTJtPXLnhvTSLEMKedj2z\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/traders/Expiry.sol\":{\"keccak256\":\"0x596b74e3ec30c00aa39bbc05e5af6f00cf14293635e8477455722cbfad763b04\",\"urls\":[\"bzz-raw://9c384090ce485fe937b0131041440d791326f4350a250c807a497801f965eff5\",\"dweb:/ipfs/QmaqVthazVi6PXa7pHpwGr5wpq5m3CdURSNfXtt1nEAKqY\"]},\"/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\":\"0x3e95a2b461f3f0cc4000d71d5c7bb6b1222788cfac1c66faad029ccaa1859d1e\",\"urls\":[\"bzz-raw://cad9773b4a1b196ea3d71129b5bd5679df7db601555a6b29ac111d38c36b00f0\",\"dweb:/ipfs/QmThFva71eLSVmBHHxn34zP7BUCJZDD6wMJHxEkKNWkkvv\"]},\"/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/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/ILiquidationCallback.sol\":{\"keccak256\":\"0x371f5287f1f3de144179f485ee617460ce52559685ce8214f4ee55bc605009ed\",\"urls\":[\"bzz-raw://ecb24b11427988292a722d078ffa2f1e390214bd71b5a1772ac304ddb20b2480\",\"dweb:/ipfs/QmdX6uJLKBiNTvUWU3MS7W3juRJXgmX1J8n572mh8ZexNA\"]},\"/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/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/Interest.sol\":{\"keccak256\":\"0xbb17eb41ff805df51e8d637ef2a368782fdc5f085889c2d847713484f8f1967b\",\"urls\":[\"bzz-raw://538001d60d625695754159a8f716877f72217899fdab296d4725dc44bdbe1895\",\"dweb:/ipfs/QmbRm1WpPpaynnwTdmwB5M7H1cZQEtRAuExqtJ3g9SUiVp\"]},\"/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/Storage.sol\":{\"keccak256\":\"0x9f8e80613b7dcefc4719e57a4a3f7c9bf2cadeb1d2c205c0b667fd5c5538648d\",\"urls\":[\"bzz-raw://ad5d2626e00154cdd4651c718824108220405b75e9196f0744874527d239246b\",\"dweb:/ipfs/QmW7VgfjXDURsTLBayTL6XBkvEX7BGsT9SYCVLpYVMAJtC\"]},\"/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\"]},\"@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\"]}},\"version\":1}",
563
+ "bytecode": "0x60806040523480156200001157600080fd5b50604051620032e0380380620032e08339810160408190526200003491620000e2565b8160006200004a6001600160e01b03620000be16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b0392909216919091179055600455506200015b565b3390565b8051620000cf8162000136565b92915050565b8051620000cf8162000150565b60008060408385031215620000f657600080fd5b6000620001048585620000c2565b92505060206200011785828601620000d5565b9150509250929050565b60006001600160a01b038216620000cf565b90565b620001418162000121565b81146200014d57600080fd5b50565b620001418162000133565b613175806200016b6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80638b4187131161008c578063b139654211610066578063b1396542146101af578063d8862484146101d0578063f2fde38b146101e5578063f64e654c146101f8576100df565b80638b418713146101725780638da5cb5b146101855780638f32d59b1461019a576100df565b806320bed572116100bd57806320bed57214610135578063448f70651461014a578063715018a61461016a576100df565b80630bce846a146100e457806315c14a4a1461010d5780631be7dd8314610122575b600080fd5b6100f76100f23660046125d4565b61020b565b6040516101049190612f26565b60405180910390f35b61011561022e565b6040516101049190612dee565b6100f761013036600461278c565b61024a565b610148610143366004612673565b610294565b005b61015d610158366004612816565b6102a3565b6040516101049190612e4d565b6101486104de565b61014861018036600461260e565b610594565b61018d61064d565b6040516101049190612d75565b6101a2610669565b6040516101049190612de0565b6101c26101bd3660046128e1565b6106a7565b604051610104929190612e76565b6101d86106e8565b6040516101049190612e91565b6101486101f33660046125b6565b6106ee565b6101486102063660046127f8565b610738565b600360209081526000928352604080842090915290825290205463ffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b815173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040808320828601518452825280832084845290915290205463ffffffff165b92915050565b61029f3383836107b2565b5050565b6102ab61217d565b60015433906103149073ffffffffffffffffffffffffffffffffffffffff1682147f4f6e6c79446f6c6f6d6974654d617267696e00000000000000000000000000007f4f6e6c7920446f6c6f6d6974652063616e2063616c6c2066756e6374696f6e0084610853565b61031d8461094f565b1561034f57604080516080810190915260018082526020820190815260200160008152602001600081525091506104d1565b600080848060200190516103669190810190612924565b9150915060006103768b8461024a565b90506103d88163ffffffff16600014157f45787069727900000000000000000000000000000000000000000000000000007f457870697279206e6f74207365740000000000000000000000000000000000008e600001518f602001518861095b565b6104406103e3610a53565b63ffffffff168263ffffffff1611157f45787069727900000000000000000000000000000000000000000000000000007f426f72726f77206e6f74207965742065787069726564000000000000000000008463ffffffff16610a63565b6104a18263ffffffff168263ffffffff1611157f45787069727900000000000000000000000000000000000000000000000000007f4578706972792070617374206d617845787069727900000000000000000000008463ffffffff16610a63565b6001546104cb9073ffffffffffffffffffffffffffffffffffffffff168e8e8e8d8d8d8a89610ac5565b94505050505b5098975050505050505050565b6104e6610669565b610525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e3d565b60405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60015433906105fd9073ffffffffffffffffffffffffffffffffffffffff1682147f4f6e6c79446f6c6f6d6974654d617267696e00000000000000000000000000007f4f6e6c7920446f6c6f6d6974652063616e2063616c6c2066756e6374696f6e0084610853565b60008280602001905161061391908101906126a3565b9050600081600181111561062357fe5b141561063a5783516106359084610f11565b610646565b83516106469084611170565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff1661068b6111bb565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6106af6121a6565b6106b76121a6565b6001546106dc9073ffffffffffffffffffffffffffffffffffffffff168686866111bf565b91509150935093915050565b60045481565b6106f6610669565b61072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e3d565b6107358161144d565b50565b610740610669565b610776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e3d565b7fd08f204a092297d87c6a408c8d66cb1b189734e8284e655f896717b45a93a536816040516107a59190612e91565b60405180910390a1600455565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600360209081526040808320938616835292905281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8416179055517f6d39d55c693043fe0327fddb80edde3a40fb0419a6299d29592cc2f11e728b9c9061084690859085908590612d83565b60405180910390a1505050565b836109495761086183611527565b7f3a2000000000000000000000000000000000000000000000000000000000000061088b84611527565b7f203c0000000000000000000000000000000000000000000000000000000000006108b5856115ff565b6040516108eb9594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001612c01565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261051c91600401612dfc565b50505050565b6020810151155b919050565b85610a4b5761096985611527565b7f3a2000000000000000000000000000000000000000000000000000000000000061099386611527565b7f203c0000000000000000000000000000000000000000000000000000000000006109bd876115ff565b7f2c200000000000000000000000000000000000000000000000000000000000006109e788611776565b7f2c20000000000000000000000000000000000000000000000000000000000000610a1189611776565b6040516108eb999897969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001612cdb565b505050505050565b6000610a5e42611885565b905090565b8361094957610a7183611527565b7f3a20000000000000000000000000000000000000000000000000000000000000610a9b84611527565b7f203c0000000000000000000000000000000000000000000000000000000000006108b585611776565b610acd61217d565b610ad561217d565b610add6121b9565b6040517fc190c2ec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d169063c190c2ec90610b31908c908e90600401612e5b565b604080518083038186803b158015610b4857600080fd5b505afa158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b8091908101906127da565b9050610b8b866118dc565b15610cdf57610bde858c147f45787069727900000000000000000000000000000000000000000000000000007f696e7075744d61726b6574206d69736d617463680000000000000000000000008e610a63565b610c49610bea886118f2565b157f45787069727900000000000000000000000000000000000000000000000000007f426f72726f77732063616e6e6f74206265206f766572706169640000000000008a602001516fffffffffffffffffffffffffffffffff16610a63565b610c528861191a565b610c5857fe5b610cb1610c64826118dc565b7f45787069727900000000000000000000000000000000000000000000000000007f436f6c6c61746572616c206d75737420626520706f73697469766500000000008d8560200151611943565b610cbe8c878c8e88611a07565b9150610cc987611a80565b15610cda57610cda89866000611a9a565b610e2b565b610d2d858b147f45787069727900000000000000000000000000000000000000000000000000007f6f75747075744d61726b6574206d69736d6174636800000000000000000000008d610a63565b610d98610d398861191a565b157f45787069727900000000000000000000000000000000000000000000000000007f436f6c6c61746572616c2063616e6e6f74206265206f766572757365640000008a602001516fffffffffffffffffffffffffffffffff16610a63565b610da1886118f2565b610da757fe5b610e00610db382611b3d565b7f45787069727900000000000000000000000000000000000000000000000000007f426f72726f7773206d757374206265206e6567617469766500000000000000008d8560200151611943565b610e0d8c878d8d88611b54565b9150806020015182606001511415610e2b57610e2b89866000611a9a565b60208101516060830151610e889180821115917f4578706972790000000000000000000000000000000000000000000000000000917f6f75747075744d61726b657420746f6f20736d616c6c000000000000000000009190611943565b8051825115159015151415610e9957fe5b610f02898c8714610eaa578c610eac565b8b5b8d8814610eb95788610ed4565b60408051808201909152855115158152606086015160208201525b888f8a14610efb576040805180820190915287511515815260608801516020820152610efd565b8a5b611bb2565b509a9950505050505050505050565b6000606082806020019051610f2991908101906126c1565b90925090506000826001811115610f3c57fe5b14610f4357fe5b60005b815181101561064657610f576121d0565b828281518110610f6357fe5b602002602001015190508573ffffffffffffffffffffffffffffffffffffffff1681600001516000015173ffffffffffffffffffffffffffffffffffffffff161461100e5780515173ffffffffffffffffffffffffffffffffffffffff9081166000908152600360209081526040808320938a168352929052205463ffffffff1680158061100057508063ffffffff16826040015163ffffffff16105b1561100c575050611168565b505b604081015163ffffffff16158015906110d35750600154815160208301516040517f47d1b53c0000000000000000000000000000000000000000000000000000000081526110d39373ffffffffffffffffffffffffffffffffffffffff16926347d1b53c9261107f92600401612e5b565b604080518083038186803b15801561109657600080fd5b505afa1580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110ce91908101906127bc565b61191a565b15611152578060600151806110fd57506110f58160000151826020015161024a565b63ffffffff16155b1561114d576000611136611131836040015163ffffffff1661111d610a53565b63ffffffff16611e0690919063ffffffff16565b611885565b905061114b8260000151836020015183611a9a565b505b611166565b611166816000015182602001516000611a9a565b505b600101610f46565b600061117a6121b9565b8280602001905161118e9190810190612709565b909250905060018260018111156111a157fe5b146111a857fe5b61094984826000015183602001516107b2565b3390565b6111c76121a6565b6111cf6121a6565b6111d76121a6565b6040517fd24c48bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88169063d24c48bc9061122b9089908990600401612ebf565b60206040518083038186803b15801561124357600080fd5b505afa158015611257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061127b919081019061276e565b905060006112a58563ffffffff16611291610a53565b63ffffffff16611e4c90919063ffffffff16565b90506004548110156112c5576112c2826000015182600454611e8e565b82525b6112cd6121a6565b6040517f8928378e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a1690638928378e9061131f908b90600401612e91565b60206040518083038186803b15801561133757600080fd5b505afa15801561134b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061136f919081019061276e565b90506113796121a6565b6040517f8928378e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b1690638928378e906113cb908b90600401612e91565b60206040518083038186803b1580156113e357600080fd5b505afa1580156113f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061141b919081019061276e565b905061143c61142e826000015186611eb8565b82519063ffffffff611e0616565b815290999098509650505050505050565b73ffffffffffffffffffffffffffffffffffffffff811661149a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e0d565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6060808260405160200161153b9190612be0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b80156115e45781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909101908290829081106115a757fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016156115df5760010181529050610956565b61156e565b5060408051600080825260208201909252905b509392505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b8160008151811061164b57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b8160018151811061168c57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b60148110156115f757600281026116d7600f8516611ed1565b8382602903815181106116e657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350611728600f8516611ed1565b83826028038151811061173757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c916001016116be565b6060816117b7575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610956565b8160005b81156117cf57600101600a820491506117bb565b6060816040519080825280601f01601f1916602001820160405280156117fc576020820181803883390190505b508593509050815b801561187c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b82828151811061184257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611804565b50949350505050565b60008161028e63ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743332000000000000000000000084610a63565b8051600090801561028e57505060200151151590565b8051600090801561028e575050602001516fffffffffffffffffffffffffffffffff16151590565b805160009015801561028e575050602001516fffffffffffffffffffffffffffffffff16151590565b846106465761195184611527565b7f3a2000000000000000000000000000000000000000000000000000000000000061197b85611527565b7f203c0000000000000000000000000000000000000000000000000000000000006119a586611776565b7f2c200000000000000000000000000000000000000000000000000000000000006119cf87611776565b6040516108eb97969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001612c5f565b611a0f61217d565b611a176121a6565b611a1f6121a6565b611a2b888787876111bf565b915091506000611a48886020015183600001518560000151611e8e565b604080516080810190915260008082529192509060208201905b81526020016000815260200191909152925050505b95945050505050565b602001516fffffffffffffffffffffffffffffffff161590565b825173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040808320828701805185529083528184208685529092529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff85161790558451905191517ecee2201664da23900ada76f5e96bcae576e5d7253b36f10dc1b379597d521b92610846929186908690612dab565b805160009015801561028e57505060200151151590565b611b5c61217d565b611b646121a6565b611b6c6121a6565b611b78888787876111bf565b915091506000611b95886020015184600001518460000151611ef3565b604080516080810190915260018152909150602081016000611a62565b8451611bd39073ffffffffffffffffffffffffffffffffffffffff16611f87565b15610646578451602086015160405160009260609273ffffffffffffffffffffffffffffffffffffffff909116917f839c1faa0000000000000000000000000000000000000000000000000000000091611c37918a908a908a908a90602401612eda565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611cc09190612bf5565b6000604051808303816000865af19150503d8060008114611cfd576040519150601f19603f3d011682016040523d82523d6000602084013e611d02565b606091505b50915091508115611d6857866000015173ffffffffffffffffffffffffffffffffffffffff167f5418b0c788a0e055245b87cdebed5cb5af6e38862954e736cf2c11165cfac3f58860200151604051611d5b9190612e91565b60405180910390a2611dfd565b604481511015611d875750604080516020810190915260008152611da4565b60048101905080806020019051611da19190810190612739565b90505b866000015173ffffffffffffffffffffffffffffffffffffffff167f969c8b99a23d857754fd7c4d782add205dc6127f8a50f606803b6076a50a2345886020015183604051611df4929190612e9f565b60405180910390a25b50505050505050565b600082820183811015611e45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e1d565b9392505050565b6000611e4583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fc0565b6000611eb082611ea4868663ffffffff61200616565b9063ffffffff61205a16565b949350505050565b6000611e45838360000151670de0b6b3a7640000611e8e565b6000600a821015611ee957506030810160f81b610956565b5060570160f81b90565b6000831580611f00575082155b15611f1757611f1060008361205a565b9050611e45565b6000611f29858563ffffffff61200616565b9050611a77611f546001611f486002611ea4888463ffffffff611e4c16565b9063ffffffff611e0616565b611f64838663ffffffff61209c16565b1015611f71576000611f74565b60015b60ff16611f48838663ffffffff61205a16565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611eb0575050151592915050565b60008184841115611ffe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c9190612dfc565b505050900390565b6000826120155750600061028e565b8282028284828161202257fe5b0414611e45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e2d565b6000611e4583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120de565b6000611e4583836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525061212f565b60008183612119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c9190612dfc565b50600083858161212557fe5b0495945050505050565b6000818361216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c9190612dfc565b5082848161217457fe5b06949350505050565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b6040518060200160405280600081525090565b604080518082019091526000808252602082015290565b60405180608001604052806121e36121b9565b81526000602082018190526040820181905260609091015290565b803561028e816130ed565b805161028e816130ed565b600082601f83011261222557600080fd5b815161223861223382612f5b565b612f34565b915081818352602084019350602081019050838560a084028201111561225d57600080fd5b60005b8381101561228b578161227388826124b1565b84525060209092019160a09190910190600101612260565b5050505092915050565b803561028e81613101565b805161028e81613101565b600082601f8301126122bc57600080fd5b81356122ca61223382612f7c565b915080825260208301602083018583830111156122e657600080fd5b6122f1838284613083565b50505092915050565b805161028e8161310a565b600082601f83011261231657600080fd5b815161232461223382612f7c565b9150808252602083016020830185838301111561234057600080fd5b6122f183828461308f565b60006020828403121561235d57600080fd5b6123676020612f34565b905060006123758484612595565b82525092915050565b60006040828403121561239057600080fd5b61239a6040612f34565b905060006123a88484612209565b82525060206123b984848301612595565b60208301525092915050565b6000604082840312156123d757600080fd5b6123e16040612f34565b905060006123ef84846121fe565b82525060206123b98484830161258a565b60006040828403121561241257600080fd5b61241c6040612f34565b9050600061242a8484612295565b82525060206123b984848301612574565b60006040828403121561244d57600080fd5b6124576040612f34565b9050600061246584846122a0565b82525060206123b98484830161257f565b60006040828403121561248857600080fd5b6124926040612f34565b905060006124a08484612209565b82525060206123b9848483016125ab565b600060a082840312156124c357600080fd5b6124cd6080612f34565b905060006124db848461237e565b82525060406124ec84848301612595565b6020830152506060612500848285016125ab565b6040830152506080612514848285016122a0565b60608301525092915050565b60006040828403121561253257600080fd5b61253c6040612f34565b905060006123ef8484612295565b60006040828403121561255c57600080fd5b6125666040612f34565b905060006123a884846122a0565b803561028e81613117565b805161028e81613117565b803561028e81613120565b805161028e81613120565b803561028e81613129565b805161028e81613129565b6000602082840312156125c857600080fd5b6000611eb084846121fe565b600080604083850312156125e757600080fd5b60006125f385856121fe565b9250506020612604858286016121fe565b9150509250929050565b60008060006080848603121561262357600080fd5b600061262f86866121fe565b9350506020612640868287016123c5565b925050606084013567ffffffffffffffff81111561265d57600080fd5b612669868287016122ab565b9150509250925092565b6000806040838503121561268657600080fd5b600061269285856121fe565b9250506020612604858286016125a0565b6000602082840312156126b557600080fd5b6000611eb084846122fa565b600080604083850312156126d457600080fd5b60006126e085856122fa565b925050602083015167ffffffffffffffff8111156126fd57600080fd5b61260485828601612214565b6000806060838503121561271c57600080fd5b600061272885856122fa565b925050602061260485828601612476565b60006020828403121561274b57600080fd5b815167ffffffffffffffff81111561276257600080fd5b611eb084828501612305565b60006020828403121561278057600080fd5b6000611eb0848461234b565b6000806060838503121561279f57600080fd5b60006127ab85856123c5565b92505060406126048582860161258a565b6000604082840312156127ce57600080fd5b6000611eb0848461243b565b6000604082840312156127ec57600080fd5b6000611eb0848461254a565b60006020828403121561280a57600080fd5b6000611eb0848461258a565b6000806000806000806000806101a0898b03121561283357600080fd5b600061283f8b8b61258a565b98505060206128508b828c0161258a565b97505060406128618b828c016123c5565b96505060806128728b828c016123c5565b95505060c06128838b828c01612400565b9450506101006128958b828c01612400565b9350506101406128a78b828c01612520565b92505061018089013567ffffffffffffffff8111156128c557600080fd5b6128d18b828c016122ab565b9150509295985092959890939650565b6000806000606084860312156128f657600080fd5b6000612902868661258a565b93505060206129138682870161258a565b9250506040612669868287016125a0565b6000806040838503121561293757600080fd5b60006129438585612595565b9250506020612604858286016125ab565b61295d81612fcf565b82525050565b61295d81612fda565b61295d61297882612fdf565b613029565b61295d61297882613004565b61295d61297882613029565b60006129a082612fc2565b6129aa8185610956565b93506129ba81856020860161308f565b9290920192915050565b61295d8161306d565b61295d81613078565b60006129e182612fc2565b6129eb8185612fc6565b93506129fb81856020860161308f565b612a04816130bb565b9093019392505050565b6000612a1b602683612fc6565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612a7a601b83612fc6565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000612ab3602183612fc6565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612b12602083612fc6565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b80516080830190612b4f8482612963565b506020820151612b6260208501826129cd565b506040820151612b7560408501826129cd565b5060608201516109496060850182612bce565b80516040830190612b998482612954565b5060208201516109496020850182612bce565b805160208301906109498482612bce565b80516040830190612b998482612963565b61295d81613029565b61295d81613064565b6000612bec8284612989565b50602001919050565b6000611e458284612995565b6000612c0d8289612995565b9150612c19828861297d565b600282019150612c298287612995565b9150612c35828661297d565b600282019150612c458285612995565b9150612c51828461296c565b506001019695505050505050565b6000612c6b828b612995565b9150612c77828a61297d565b600282019150612c878289612995565b9150612c93828861297d565b600282019150612ca38287612995565b9150612caf828661297d565b600282019150612cbf8285612995565b9150612ccb828461296c565b5060010198975050505050505050565b6000612ce7828d612995565b9150612cf3828c61297d565b600282019150612d03828b612995565b9150612d0f828a61297d565b600282019150612d1f8289612995565b9150612d2b828861297d565b600282019150612d3b8287612995565b9150612d47828661297d565b600282019150612d578285612995565b9150612d63828461296c565b506001019a9950505050505050505050565b6020810161028e8284612954565b60608101612d918286612954565b612d9e6020830185612954565b611eb06040830184612bd7565b60808101612db98287612954565b612dc66020830186612bce565b612dd36040830185612bce565b611a776060830184612bd7565b6020810161028e8284612963565b6020810161028e82846129c4565b60208082528101611e4581846129d6565b6020808252810161028e81612a0e565b6020808252810161028e81612a6d565b6020808252810161028e81612aa6565b6020808252810161028e81612b05565b6080810161028e8284612b3e565b60608101612e698285612b88565b611e456040830184612bce565b60408101612e848285612bac565b611e456020830184612bac565b6020810161028e8284612bce565b60408101612ead8285612bce565b8181036020830152611eb081846129d6565b60408101612ecd8285612bce565b611e456020830184612bce565b60e08101612ee88288612bce565b612ef56020830187612bce565b612f026040830186612bbd565b612f0f6080830185612bce565b612f1c60a0830184612bbd565b9695505050505050565b6020810161028e8284612bd7565b60405181810167ffffffffffffffff81118282101715612f5357600080fd5b604052919050565b600067ffffffffffffffff821115612f7257600080fd5b5060209081020190565b600067ffffffffffffffff821115612f9357600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b5190565b90815260200190565b600061028e8261304b565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b80610956816130e3565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b600061028e82612fcf565b600061028e8261302c565b82818337506000910152565b60005b838110156130aa578181015183820152602001613092565b838111156109495750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6002811061073557fe5b6130f681612fcf565b811461073557600080fd5b6130f681612fda565b6002811061073557600080fd5b6130f681613036565b6130f681613029565b6130f68161306456fea365627a7a723158204f1de4f2f9d25103b676394a8f822534a1ab9768d05fddb8f92b35ffaa1b195c6c6578706572696d656e74616cf564736f6c63430005100040",
564
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80638b4187131161008c578063b139654211610066578063b1396542146101af578063d8862484146101d0578063f2fde38b146101e5578063f64e654c146101f8576100df565b80638b418713146101725780638da5cb5b146101855780638f32d59b1461019a576100df565b806320bed572116100bd57806320bed57214610135578063448f70651461014a578063715018a61461016a576100df565b80630bce846a146100e457806315c14a4a1461010d5780631be7dd8314610122575b600080fd5b6100f76100f23660046125d4565b61020b565b6040516101049190612f26565b60405180910390f35b61011561022e565b6040516101049190612dee565b6100f761013036600461278c565b61024a565b610148610143366004612673565b610294565b005b61015d610158366004612816565b6102a3565b6040516101049190612e4d565b6101486104de565b61014861018036600461260e565b610594565b61018d61064d565b6040516101049190612d75565b6101a2610669565b6040516101049190612de0565b6101c26101bd3660046128e1565b6106a7565b604051610104929190612e76565b6101d86106e8565b6040516101049190612e91565b6101486101f33660046125b6565b6106ee565b6101486102063660046127f8565b610738565b600360209081526000928352604080842090915290825290205463ffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b815173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040808320828601518452825280832084845290915290205463ffffffff165b92915050565b61029f3383836107b2565b5050565b6102ab61217d565b60015433906103149073ffffffffffffffffffffffffffffffffffffffff1682147f4f6e6c79446f6c6f6d6974654d617267696e00000000000000000000000000007f4f6e6c7920446f6c6f6d6974652063616e2063616c6c2066756e6374696f6e0084610853565b61031d8461094f565b1561034f57604080516080810190915260018082526020820190815260200160008152602001600081525091506104d1565b600080848060200190516103669190810190612924565b9150915060006103768b8461024a565b90506103d88163ffffffff16600014157f45787069727900000000000000000000000000000000000000000000000000007f457870697279206e6f74207365740000000000000000000000000000000000008e600001518f602001518861095b565b6104406103e3610a53565b63ffffffff168263ffffffff1611157f45787069727900000000000000000000000000000000000000000000000000007f426f72726f77206e6f74207965742065787069726564000000000000000000008463ffffffff16610a63565b6104a18263ffffffff168263ffffffff1611157f45787069727900000000000000000000000000000000000000000000000000007f4578706972792070617374206d617845787069727900000000000000000000008463ffffffff16610a63565b6001546104cb9073ffffffffffffffffffffffffffffffffffffffff168e8e8e8d8d8d8a89610ac5565b94505050505b5098975050505050505050565b6104e6610669565b610525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e3d565b60405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60015433906105fd9073ffffffffffffffffffffffffffffffffffffffff1682147f4f6e6c79446f6c6f6d6974654d617267696e00000000000000000000000000007f4f6e6c7920446f6c6f6d6974652063616e2063616c6c2066756e6374696f6e0084610853565b60008280602001905161061391908101906126a3565b9050600081600181111561062357fe5b141561063a5783516106359084610f11565b610646565b83516106469084611170565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff1661068b6111bb565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6106af6121a6565b6106b76121a6565b6001546106dc9073ffffffffffffffffffffffffffffffffffffffff168686866111bf565b91509150935093915050565b60045481565b6106f6610669565b61072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e3d565b6107358161144d565b50565b610740610669565b610776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e3d565b7fd08f204a092297d87c6a408c8d66cb1b189734e8284e655f896717b45a93a536816040516107a59190612e91565b60405180910390a1600455565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600360209081526040808320938616835292905281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8416179055517f6d39d55c693043fe0327fddb80edde3a40fb0419a6299d29592cc2f11e728b9c9061084690859085908590612d83565b60405180910390a1505050565b836109495761086183611527565b7f3a2000000000000000000000000000000000000000000000000000000000000061088b84611527565b7f203c0000000000000000000000000000000000000000000000000000000000006108b5856115ff565b6040516108eb9594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001612c01565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261051c91600401612dfc565b50505050565b6020810151155b919050565b85610a4b5761096985611527565b7f3a2000000000000000000000000000000000000000000000000000000000000061099386611527565b7f203c0000000000000000000000000000000000000000000000000000000000006109bd876115ff565b7f2c200000000000000000000000000000000000000000000000000000000000006109e788611776565b7f2c20000000000000000000000000000000000000000000000000000000000000610a1189611776565b6040516108eb999897969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001612cdb565b505050505050565b6000610a5e42611885565b905090565b8361094957610a7183611527565b7f3a20000000000000000000000000000000000000000000000000000000000000610a9b84611527565b7f203c0000000000000000000000000000000000000000000000000000000000006108b585611776565b610acd61217d565b610ad561217d565b610add6121b9565b6040517fc190c2ec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d169063c190c2ec90610b31908c908e90600401612e5b565b604080518083038186803b158015610b4857600080fd5b505afa158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b8091908101906127da565b9050610b8b866118dc565b15610cdf57610bde858c147f45787069727900000000000000000000000000000000000000000000000000007f696e7075744d61726b6574206d69736d617463680000000000000000000000008e610a63565b610c49610bea886118f2565b157f45787069727900000000000000000000000000000000000000000000000000007f426f72726f77732063616e6e6f74206265206f766572706169640000000000008a602001516fffffffffffffffffffffffffffffffff16610a63565b610c528861191a565b610c5857fe5b610cb1610c64826118dc565b7f45787069727900000000000000000000000000000000000000000000000000007f436f6c6c61746572616c206d75737420626520706f73697469766500000000008d8560200151611943565b610cbe8c878c8e88611a07565b9150610cc987611a80565b15610cda57610cda89866000611a9a565b610e2b565b610d2d858b147f45787069727900000000000000000000000000000000000000000000000000007f6f75747075744d61726b6574206d69736d6174636800000000000000000000008d610a63565b610d98610d398861191a565b157f45787069727900000000000000000000000000000000000000000000000000007f436f6c6c61746572616c2063616e6e6f74206265206f766572757365640000008a602001516fffffffffffffffffffffffffffffffff16610a63565b610da1886118f2565b610da757fe5b610e00610db382611b3d565b7f45787069727900000000000000000000000000000000000000000000000000007f426f72726f7773206d757374206265206e6567617469766500000000000000008d8560200151611943565b610e0d8c878d8d88611b54565b9150806020015182606001511415610e2b57610e2b89866000611a9a565b60208101516060830151610e889180821115917f4578706972790000000000000000000000000000000000000000000000000000917f6f75747075744d61726b657420746f6f20736d616c6c000000000000000000009190611943565b8051825115159015151415610e9957fe5b610f02898c8714610eaa578c610eac565b8b5b8d8814610eb95788610ed4565b60408051808201909152855115158152606086015160208201525b888f8a14610efb576040805180820190915287511515815260608801516020820152610efd565b8a5b611bb2565b509a9950505050505050505050565b6000606082806020019051610f2991908101906126c1565b90925090506000826001811115610f3c57fe5b14610f4357fe5b60005b815181101561064657610f576121d0565b828281518110610f6357fe5b602002602001015190508573ffffffffffffffffffffffffffffffffffffffff1681600001516000015173ffffffffffffffffffffffffffffffffffffffff161461100e5780515173ffffffffffffffffffffffffffffffffffffffff9081166000908152600360209081526040808320938a168352929052205463ffffffff1680158061100057508063ffffffff16826040015163ffffffff16105b1561100c575050611168565b505b604081015163ffffffff16158015906110d35750600154815160208301516040517f47d1b53c0000000000000000000000000000000000000000000000000000000081526110d39373ffffffffffffffffffffffffffffffffffffffff16926347d1b53c9261107f92600401612e5b565b604080518083038186803b15801561109657600080fd5b505afa1580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110ce91908101906127bc565b61191a565b15611152578060600151806110fd57506110f58160000151826020015161024a565b63ffffffff16155b1561114d576000611136611131836040015163ffffffff1661111d610a53565b63ffffffff16611e0690919063ffffffff16565b611885565b905061114b8260000151836020015183611a9a565b505b611166565b611166816000015182602001516000611a9a565b505b600101610f46565b600061117a6121b9565b8280602001905161118e9190810190612709565b909250905060018260018111156111a157fe5b146111a857fe5b61094984826000015183602001516107b2565b3390565b6111c76121a6565b6111cf6121a6565b6111d76121a6565b6040517fd24c48bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88169063d24c48bc9061122b9089908990600401612ebf565b60206040518083038186803b15801561124357600080fd5b505afa158015611257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061127b919081019061276e565b905060006112a58563ffffffff16611291610a53565b63ffffffff16611e4c90919063ffffffff16565b90506004548110156112c5576112c2826000015182600454611e8e565b82525b6112cd6121a6565b6040517f8928378e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a1690638928378e9061131f908b90600401612e91565b60206040518083038186803b15801561133757600080fd5b505afa15801561134b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061136f919081019061276e565b90506113796121a6565b6040517f8928378e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b1690638928378e906113cb908b90600401612e91565b60206040518083038186803b1580156113e357600080fd5b505afa1580156113f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061141b919081019061276e565b905061143c61142e826000015186611eb8565b82519063ffffffff611e0616565b815290999098509650505050505050565b73ffffffffffffffffffffffffffffffffffffffff811661149a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e0d565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6060808260405160200161153b9190612be0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b80156115e45781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909101908290829081106115a757fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016156115df5760010181529050610956565b61156e565b5060408051600080825260208201909252905b509392505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b8160008151811061164b57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b8160018151811061168c57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b60148110156115f757600281026116d7600f8516611ed1565b8382602903815181106116e657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350611728600f8516611ed1565b83826028038151811061173757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c916001016116be565b6060816117b7575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610956565b8160005b81156117cf57600101600a820491506117bb565b6060816040519080825280601f01601f1916602001820160405280156117fc576020820181803883390190505b508593509050815b801561187c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b82828151811061184257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611804565b50949350505050565b60008161028e63ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743332000000000000000000000084610a63565b8051600090801561028e57505060200151151590565b8051600090801561028e575050602001516fffffffffffffffffffffffffffffffff16151590565b805160009015801561028e575050602001516fffffffffffffffffffffffffffffffff16151590565b846106465761195184611527565b7f3a2000000000000000000000000000000000000000000000000000000000000061197b85611527565b7f203c0000000000000000000000000000000000000000000000000000000000006119a586611776565b7f2c200000000000000000000000000000000000000000000000000000000000006119cf87611776565b6040516108eb97969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001612c5f565b611a0f61217d565b611a176121a6565b611a1f6121a6565b611a2b888787876111bf565b915091506000611a48886020015183600001518560000151611e8e565b604080516080810190915260008082529192509060208201905b81526020016000815260200191909152925050505b95945050505050565b602001516fffffffffffffffffffffffffffffffff161590565b825173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040808320828701805185529083528184208685529092529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff85161790558451905191517ecee2201664da23900ada76f5e96bcae576e5d7253b36f10dc1b379597d521b92610846929186908690612dab565b805160009015801561028e57505060200151151590565b611b5c61217d565b611b646121a6565b611b6c6121a6565b611b78888787876111bf565b915091506000611b95886020015184600001518460000151611ef3565b604080516080810190915260018152909150602081016000611a62565b8451611bd39073ffffffffffffffffffffffffffffffffffffffff16611f87565b15610646578451602086015160405160009260609273ffffffffffffffffffffffffffffffffffffffff909116917f839c1faa0000000000000000000000000000000000000000000000000000000091611c37918a908a908a908a90602401612eda565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611cc09190612bf5565b6000604051808303816000865af19150503d8060008114611cfd576040519150601f19603f3d011682016040523d82523d6000602084013e611d02565b606091505b50915091508115611d6857866000015173ffffffffffffffffffffffffffffffffffffffff167f5418b0c788a0e055245b87cdebed5cb5af6e38862954e736cf2c11165cfac3f58860200151604051611d5b9190612e91565b60405180910390a2611dfd565b604481511015611d875750604080516020810190915260008152611da4565b60048101905080806020019051611da19190810190612739565b90505b866000015173ffffffffffffffffffffffffffffffffffffffff167f969c8b99a23d857754fd7c4d782add205dc6127f8a50f606803b6076a50a2345886020015183604051611df4929190612e9f565b60405180910390a25b50505050505050565b600082820183811015611e45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e1d565b9392505050565b6000611e4583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fc0565b6000611eb082611ea4868663ffffffff61200616565b9063ffffffff61205a16565b949350505050565b6000611e45838360000151670de0b6b3a7640000611e8e565b6000600a821015611ee957506030810160f81b610956565b5060570160f81b90565b6000831580611f00575082155b15611f1757611f1060008361205a565b9050611e45565b6000611f29858563ffffffff61200616565b9050611a77611f546001611f486002611ea4888463ffffffff611e4c16565b9063ffffffff611e0616565b611f64838663ffffffff61209c16565b1015611f71576000611f74565b60015b60ff16611f48838663ffffffff61205a16565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611eb0575050151592915050565b60008184841115611ffe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c9190612dfc565b505050900390565b6000826120155750600061028e565b8282028284828161202257fe5b0414611e45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c90612e2d565b6000611e4583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120de565b6000611e4583836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525061212f565b60008183612119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c9190612dfc565b50600083858161212557fe5b0495945050505050565b6000818361216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051c9190612dfc565b5082848161217457fe5b06949350505050565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b6040518060200160405280600081525090565b604080518082019091526000808252602082015290565b60405180608001604052806121e36121b9565b81526000602082018190526040820181905260609091015290565b803561028e816130ed565b805161028e816130ed565b600082601f83011261222557600080fd5b815161223861223382612f5b565b612f34565b915081818352602084019350602081019050838560a084028201111561225d57600080fd5b60005b8381101561228b578161227388826124b1565b84525060209092019160a09190910190600101612260565b5050505092915050565b803561028e81613101565b805161028e81613101565b600082601f8301126122bc57600080fd5b81356122ca61223382612f7c565b915080825260208301602083018583830111156122e657600080fd5b6122f1838284613083565b50505092915050565b805161028e8161310a565b600082601f83011261231657600080fd5b815161232461223382612f7c565b9150808252602083016020830185838301111561234057600080fd5b6122f183828461308f565b60006020828403121561235d57600080fd5b6123676020612f34565b905060006123758484612595565b82525092915050565b60006040828403121561239057600080fd5b61239a6040612f34565b905060006123a88484612209565b82525060206123b984848301612595565b60208301525092915050565b6000604082840312156123d757600080fd5b6123e16040612f34565b905060006123ef84846121fe565b82525060206123b98484830161258a565b60006040828403121561241257600080fd5b61241c6040612f34565b9050600061242a8484612295565b82525060206123b984848301612574565b60006040828403121561244d57600080fd5b6124576040612f34565b9050600061246584846122a0565b82525060206123b98484830161257f565b60006040828403121561248857600080fd5b6124926040612f34565b905060006124a08484612209565b82525060206123b9848483016125ab565b600060a082840312156124c357600080fd5b6124cd6080612f34565b905060006124db848461237e565b82525060406124ec84848301612595565b6020830152506060612500848285016125ab565b6040830152506080612514848285016122a0565b60608301525092915050565b60006040828403121561253257600080fd5b61253c6040612f34565b905060006123ef8484612295565b60006040828403121561255c57600080fd5b6125666040612f34565b905060006123a884846122a0565b803561028e81613117565b805161028e81613117565b803561028e81613120565b805161028e81613120565b803561028e81613129565b805161028e81613129565b6000602082840312156125c857600080fd5b6000611eb084846121fe565b600080604083850312156125e757600080fd5b60006125f385856121fe565b9250506020612604858286016121fe565b9150509250929050565b60008060006080848603121561262357600080fd5b600061262f86866121fe565b9350506020612640868287016123c5565b925050606084013567ffffffffffffffff81111561265d57600080fd5b612669868287016122ab565b9150509250925092565b6000806040838503121561268657600080fd5b600061269285856121fe565b9250506020612604858286016125a0565b6000602082840312156126b557600080fd5b6000611eb084846122fa565b600080604083850312156126d457600080fd5b60006126e085856122fa565b925050602083015167ffffffffffffffff8111156126fd57600080fd5b61260485828601612214565b6000806060838503121561271c57600080fd5b600061272885856122fa565b925050602061260485828601612476565b60006020828403121561274b57600080fd5b815167ffffffffffffffff81111561276257600080fd5b611eb084828501612305565b60006020828403121561278057600080fd5b6000611eb0848461234b565b6000806060838503121561279f57600080fd5b60006127ab85856123c5565b92505060406126048582860161258a565b6000604082840312156127ce57600080fd5b6000611eb0848461243b565b6000604082840312156127ec57600080fd5b6000611eb0848461254a565b60006020828403121561280a57600080fd5b6000611eb0848461258a565b6000806000806000806000806101a0898b03121561283357600080fd5b600061283f8b8b61258a565b98505060206128508b828c0161258a565b97505060406128618b828c016123c5565b96505060806128728b828c016123c5565b95505060c06128838b828c01612400565b9450506101006128958b828c01612400565b9350506101406128a78b828c01612520565b92505061018089013567ffffffffffffffff8111156128c557600080fd5b6128d18b828c016122ab565b9150509295985092959890939650565b6000806000606084860312156128f657600080fd5b6000612902868661258a565b93505060206129138682870161258a565b9250506040612669868287016125a0565b6000806040838503121561293757600080fd5b60006129438585612595565b9250506020612604858286016125ab565b61295d81612fcf565b82525050565b61295d81612fda565b61295d61297882612fdf565b613029565b61295d61297882613004565b61295d61297882613029565b60006129a082612fc2565b6129aa8185610956565b93506129ba81856020860161308f565b9290920192915050565b61295d8161306d565b61295d81613078565b60006129e182612fc2565b6129eb8185612fc6565b93506129fb81856020860161308f565b612a04816130bb565b9093019392505050565b6000612a1b602683612fc6565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612a7a601b83612fc6565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000612ab3602183612fc6565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612b12602083612fc6565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b80516080830190612b4f8482612963565b506020820151612b6260208501826129cd565b506040820151612b7560408501826129cd565b5060608201516109496060850182612bce565b80516040830190612b998482612954565b5060208201516109496020850182612bce565b805160208301906109498482612bce565b80516040830190612b998482612963565b61295d81613029565b61295d81613064565b6000612bec8284612989565b50602001919050565b6000611e458284612995565b6000612c0d8289612995565b9150612c19828861297d565b600282019150612c298287612995565b9150612c35828661297d565b600282019150612c458285612995565b9150612c51828461296c565b506001019695505050505050565b6000612c6b828b612995565b9150612c77828a61297d565b600282019150612c878289612995565b9150612c93828861297d565b600282019150612ca38287612995565b9150612caf828661297d565b600282019150612cbf8285612995565b9150612ccb828461296c565b5060010198975050505050505050565b6000612ce7828d612995565b9150612cf3828c61297d565b600282019150612d03828b612995565b9150612d0f828a61297d565b600282019150612d1f8289612995565b9150612d2b828861297d565b600282019150612d3b8287612995565b9150612d47828661297d565b600282019150612d578285612995565b9150612d63828461296c565b506001019a9950505050505050505050565b6020810161028e8284612954565b60608101612d918286612954565b612d9e6020830185612954565b611eb06040830184612bd7565b60808101612db98287612954565b612dc66020830186612bce565b612dd36040830185612bce565b611a776060830184612bd7565b6020810161028e8284612963565b6020810161028e82846129c4565b60208082528101611e4581846129d6565b6020808252810161028e81612a0e565b6020808252810161028e81612a6d565b6020808252810161028e81612aa6565b6020808252810161028e81612b05565b6080810161028e8284612b3e565b60608101612e698285612b88565b611e456040830184612bce565b60408101612e848285612bac565b611e456020830184612bac565b6020810161028e8284612bce565b60408101612ead8285612bce565b8181036020830152611eb081846129d6565b60408101612ecd8285612bce565b611e456020830184612bce565b60e08101612ee88288612bce565b612ef56020830187612bce565b612f026040830186612bbd565b612f0f6080830185612bce565b612f1c60a0830184612bbd565b9695505050505050565b6020810161028e8284612bd7565b60405181810167ffffffffffffffff81118282101715612f5357600080fd5b604052919050565b600067ffffffffffffffff821115612f7257600080fd5b5060209081020190565b600067ffffffffffffffff821115612f9357600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b5190565b90815260200190565b600061028e8261304b565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b80610956816130e3565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b600061028e82612fcf565b600061028e8261302c565b82818337506000910152565b60005b838110156130aa578181015183820152602001613092565b838111156109495750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6002811061073557fe5b6130f681612fcf565b811461073557600080fd5b6130f681612fda565b6002811061073557600080fd5b6130f681613036565b6130f681613029565b6130f68161306456fea365627a7a723158204f1de4f2f9d25103b676394a8f822534a1ab9768d05fddb8f92b35ffaa1b195c6c6578706572696d656e74616cf564736f6c63430005100040",
565
565
  "sourceMap": "1843:15101:35:-;;;3236:195;8:9:-1;5:2;;;30:1;27;20:12;5:2;3236:195:35;;;;;;;;;;;;;;;;;;;;;3361:14;698:17:123;718:12;-1:-1:-1;;;;;718:10:123;:12;:::i;:::-;740:6;:18;;-1:-1:-1;;;;;;740:18:123;-1:-1:-1;;;;;740:18:123;;;;;;;773:43;;740:18;;-1:-1:-1;740:18:123;773:43;;740:6;;773:43;-1:-1:-1;1293:15:6;:49;;-1:-1:-1;;;;;;1293:49:6;-1:-1:-1;;;;;1293:49:6;;;;;;;;;;3391:16:35;:33;-1:-1:-1;1843:15101:35;;788:96:120;867:10;788:96;:::o;5:134:-1:-;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:134;224:13;;242:33;224:13;242:33;;287:399;;;419:2;407:9;398:7;394:23;390:32;387:2;;;435:1;432;425:12;387:2;470:1;487:64;543:7;523:9;487:64;;;477:74;;449:108;588:2;606:64;662:7;653:6;642:9;638:22;606:64;;;596:74;;567:109;381:305;;;;;;693:91;;-1:-1;;;;;853:54;;755:24;836:76;919:72;981:5;964:27;998:117;1067:24;1085:5;1067:24;;;1060:5;1057:35;1047:2;;1106:1;1103;1096:12;1047:2;1041:74;;1122:117;1191:24;1209:5;1191:24;;1165:74;1843:15101:35;;;;;;",
566
566
  "deployedSourceMap": "1843:15101:35:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1843:15101:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3002:72;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1122:38:6;;;:::i;:::-;;;;;;;;6190:220:35;;;;;;;;;:::i;3765:166::-;;;;;;;;;:::i;:::-;;4465:1677;;;;;;;;;:::i;:::-;;;;;;;;1684:137:123;;;:::i;4001:458:35:-;;;;;;;;;:::i;899:77:123:-;;;:::i;:::-;;;;;;;;1250:92;;;:::i;:::-;;;;;;;;6416:410:35;;;;;;;;;:::i;:::-;;;;;;;;;3152:31;;;:::i;:::-;;;;;;;;1970:107:123;;;;;;;;;:::i;3487:219:35:-;;;;;;;;;:::i;3002:72::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1122:38:6:-;;;;;;:::o;6190:220:35:-;6363:13;;6352:25;;6323:6;6352:25;;;:10;:25;;;;;;;;6378:14;;;;6352:41;;;;;;;:51;;;;;;;;;;;6190:220;;;;;:::o;3765:166::-;3878:46;3891:10;3903:6;3911:12;3878;:46::i;:::-;3765:166;;:::o;4465:1677::-;4855:24;;:::i;:::-;1493:15:6;;4826:10:35;;1451:151:6;;1493:15;;1477:32;;1523:4;1451:151;4826:10:35;1451:12:6;:151::i;:::-;4946:17:35;:8;:15;:17::i;:::-;4942:250;;;4986:195;;;;;;;;;5028:4;4986:195;;;;;;;;;;;5114:26;4986:195;;;;5165:1;4986:195;;;4979:202;;;;4942:250;5203:20;5225:16;5256:4;5245:35;;;;;;;;;;;;;;5202:78;;;;5291:13;5307:37;5317:12;5331;5307:9;:37::i;:::-;5291:53;;5382:186;5408:6;:11;;5418:1;5408:11;;5433:4;5382:186;5481:12;:18;;;5513:12;:19;;;5546:12;5382;:186::i;:::-;5578:140;5614:18;:16;:18::i;:::-;5604:28;;:6;:28;;;;5646:4;5578:140;5702:6;5578:140;;:12;:140::i;:::-;5728:130;5764:9;5754:19;;:6;:19;;;;5787:4;5728:130;5842:6;5728:130;;:12;:130::i;:::-;5911:15;;5876:259;;5911:15;;5940:13;5967:14;5995:12;6021:11;6046;6071:8;6093:12;6119:6;5876:21;:259::i;:::-;5869:266;;;;;1612:1:6;4465:1677:35;;;;;;;;;;;:::o;1684:137:123:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;1782:1;1766:6;;1745:40;;;1766:6;;;;1745:40;;1782:1;;1745:40;1812:1;1795:19;;;;;;1684:137::o;4001:458:35:-;1493:15:6;;4165:10:35;;1451:151:6;;1493:15;;1477:32;;1523:4;1451:151;4165:10:35;1451:12:6;:151::i;:::-;4191:25:35;4230:4;4219:36;;;;;;;;;;;;;;4191:64;-1:-1:-1;4281:26:35;4269:8;:38;;;;;;;;;4265:188;;;4346:13;;4323:43;;4361:4;4323:22;:43::i;:::-;4265:188;;;4422:13;;4397:45;;4437:4;4397:24;:45::i;:::-;1612:1:6;4001:458:35;;;;:::o;899:77:123:-;937:7;963:6;;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;1313:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;6416:410:35:-;6596:21;;:::i;:::-;6631;;:::i;:::-;6722:15;;6684:135;;6722:15;;6751:12;6777;6803:6;6684:24;:135::i;:::-;6677:142;;;;6416:410;;;;;;:::o;3152:31::-;;;;:::o;1970:107:123:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;3487:219:35:-;1103:9:123;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;3614:39:35;3635:17;3614:39;;;;;;;;;;;;;;;3663:16;:36;3487:219::o;13423:257::-;13560:26;;;;;;;;:16;:26;;;;;;;;:34;;;;;;;;;;;:49;;;;;;;;;;13624;;;;;13560:26;;:34;;:49;;13624;;;;;;;;;;13423:257;;;:::o;2962:561:76:-;3122:4;3117:400;;3236:24;3255:4;3236:18;:24::i;:::-;3286:5;3317:26;3336:6;3317:18;:26::i;:::-;3369:6;3401:19;3411:8;3401:9;:19::i;:::-;3194:280;;;;;;;;;3446:6;;3194:280;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;3194:280:76;;;;3142:364;;;;;;;;;3117:400;2962:561;;;;:::o;6182:137:80:-;6300:7;;;;:12;6182:137;;;;:::o;4198:765:76:-;4410:4;4405:552;;4524:24;4543:4;4524:18;:24::i;:::-;4574:5;4605:26;4624:6;4605:18;:26::i;:::-;4657:6;4689:19;4699:8;4689:9;:19::i;:::-;4734:5;4765:19;4775:8;4765:9;:19::i;:::-;4810:5;4841:19;4851:8;4841:9;:19::i;:::-;4482:432;;;;;;;;;;;;;4886:6;;4482:432;;;;4405:552;4198:765;;;;;;:::o;910:132:78:-;980:6;1009:26;1019:15;1009:9;:26::i;:::-;1002:33;;910:132;:::o;1726:561:76:-;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;9803:3274:35:-;10182:24;;:::i;:::-;10222:31;;:::i;:::-;10263:29;;:::i;:::-;10295:58;;;;;:28;;;;;;:58;;10324:12;;10338:14;;10295:58;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10295:58:35;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10295:58:35;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10295:58:35;;;;;;;;;10263:90;;10368:21;:8;:19;:21::i;:::-;10364:2070;;;10405:166;10452:12;10435:13;:29;10482:4;10405:166;10544:13;10405:12;:166::i;:::-;10585:172;10616:24;:11;:22;:24::i;:::-;10615:25;10658:4;10585:172;10726:11;:17;;;10585:172;;:12;:172::i;:::-;10778:24;:11;:22;:24::i;:::-;10771:32;;;;10817:206;10847:25;:12;:23;:25::i;:::-;10890:4;10817:206;10959:14;10991:12;:18;;;10817:12;:206::i;:::-;11046:176;11081:14;11113:8;11139:14;11171:13;11202:6;11046:17;:176::i;:::-;11037:185;;11295:20;:11;:18;:20::i;:::-;11291:100;;;11335:41;11346:12;11360;11374:1;11335:10;:41::i;:::-;10364:2070;;;11421:169;11469:12;11451:14;:30;11499:4;11421:169;11562:14;11421:12;:169::i;:::-;11604:175;11635:24;:11;:22;:24::i;:::-;11634:25;11677:4;11604:175;11748:11;:17;;;11604:175;;:12;:175::i;:::-;11800:24;:11;:22;:24::i;:::-;11793:32;;;;11839:203;11869:25;:12;:23;:25::i;:::-;11912:4;11839:203;11978:14;12010:12;:18;;;11839:12;:203::i;:::-;12065:176;12100:14;12132:8;12158:13;12189:14;12221:6;12065:17;:176::i;:::-;12056:185;;12330:12;:18;;;12314:6;:12;;;:34;12310:114;;;12368:41;12379:12;12393;12407:1;12368:10;:41::i;:::-;12486:18;;;;12470:12;;;;12444:184;;12470:34;;;;;12518:4;;12444:184;;12470:12;12444;:184::i;:::-;12660:17;;12645:11;;:32;;;;;;;12638:40;;;;12689:357;12736:12;12778:13;12762:12;:29;:62;;12811:13;12762:62;;;12794:14;12762:62;12854:13;12838:12;:29;:79;;12909:8;12838:79;;;12870:36;;;;;;;;;12880:11;;12870:36;;;;12893:12;;;;12870:36;;;;12838:79;12931:12;12973:13;12957:12;:29;:79;;13000:36;;;;;;;;;13010:11;;13000:36;;;;13023:12;;;;13000:36;;;;12957:79;;;12989:8;12957:79;12689:33;:357::i;:::-;-1:-1:-1;13064:6:35;9803:3274;-1:-1:-1;;;;;;;;;;9803:3274:35:o;7836:1542::-;7969:25;8008:30;8062:4;8051:52;;;;;;;;;;;;;;7955:148;;-1:-1:-1;7955:148:35;-1:-1:-1;8133:26:35;8121:8;:38;;;;;;;;;8114:46;;;;8176:9;8171:1201;8195:8;:15;8191:1;:19;8171:1201;;;8231:23;;:::i;:::-;8257:8;8266:1;8257:11;;;;;;;;;;;;;;8231:37;;8307:6;8286:27;;:3;:11;;;:17;;;:27;;;8282:355;;8459:11;;:17;8442:35;;;;8412:27;8442:35;;;:16;:35;;;;;;;;:43;;;;;;;;;;;;8507:25;;;:65;;;8552:20;8536:36;;:3;:13;;;:36;;;8507:65;8503:120;;;8596:8;;;;8503:120;8282:355;;8738:13;;;;:18;;;;;;:107;;-1:-1:-1;8776:15:35;;8806:11;;8819:12;;;;8776:56;;;;;:69;;:15;;;:29;;:56;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8776:56:35;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8776:56:35;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8776:56:35;;;;;;;;;:67;:69::i;:::-;8717:645;;;8952:3;:15;;;:60;;;;8971:36;8981:3;:11;;;8994:3;:12;;;8971:9;:36::i;:::-;:41;;;8952:60;8948:248;;;9036:20;9059:44;:37;9082:3;:13;;;9059:37;;:18;:16;:18::i;:::-;:22;;;;:37;;;;:::i;:::-;:42;:44::i;:::-;9036:67;;9125:52;9136:3;:11;;;9149:3;:12;;;9163:13;9125:10;:52::i;:::-;8948:248;;8717:645;;;9307:40;9318:3;:11;;;9331:3;:12;;;9345:1;9307:10;:40::i;:::-;8171:1201;;8212:3;;8171:1201;;9384:413;9519:25;9558:33;;:::i;:::-;9615:4;9604:52;;;;;;;;;;;;;;9505:151;;-1:-1:-1;9505:151:35;-1:-1:-1;9685:28:35;9673:8;:40;;;;;;;;;9666:48;;;;9724:66;9737:6;9745:11;:18;;;9765:11;:24;;;9724:12;:66::i;788:96:120:-;867:10;788:96;:::o;6884:946:35:-;7106:21;;:::i;:::-;7141;;:::i;:::-;7187:26;;:::i;:::-;7216:104;;;;;:42;;;;;;:104;;7272:12;;7298;;7216:104;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7216:104:35;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7216:104:35;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7216:104:35;;;;;;;;;7187:133;;7331:17;7351:30;7374:6;7351:30;;:18;:16;:18::i;:::-;:22;;;;:30;;;;:::i;:::-;7331:50;;7408:16;;7396:9;:28;7392:132;;;7455:58;7471:6;:12;;;7485:9;7496:16;;7455:15;:58::i;:::-;7440:73;;7392:132;7534:31;;:::i;:::-;7568:43;;;;;:29;;;;;;:43;;7598:12;;7568:43;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7568:43:35;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7568:43:35;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7568:43:35;;;;;;;;;7534:77;;7621:31;;:::i;:::-;7655:43;;;;;:29;;;;;;:43;;7685:12;;7655:43;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7655:43:35;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7655:43:35;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7655:43:35;;;;;;;;;7621:77;;7726:57;7746:36;7758:9;:15;;;7775:6;7746:11;:36::i;:::-;7726:15;;;:57;:19;:57;:::i;:::-;7708:75;;7802:9;;7708:75;;-1:-1:-1;6884:946:35;-1:-1:-1;;;;;;;6884:946:35:o;2178:225:123:-;2251:22;;;2243:73;;;;;;;;;;;;;;2352:6;;;2331:38;;;;;;;2352:6;;;2331:38;;;2379:6;:17;;;;;;;;;;;;;;;2178:225::o;6359:966:76:-;6462:12;6537:19;6576:5;6559:23;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;6559:23:76;;;;-1:-1:-1;49:4;6688:571:76;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:76;;6956:293;6688:571;;;-1:-1:-1;7306:12:76;;;7316:1;7306:12;;;;;;;;;;;-1:-1:-1;7299:19:76;6359:966;-1:-1:-1;;;6359:966:76:o;8249:962::-;8521:13;;;8531:2;8521:13;;;8343:12;8521:13;;;;;;8383:14;;;;8343:12;;8521:13;;;21:6:-1;;104:10;8521:13:76;87:34:-1;135:17;;-1:-1;8521:13:76;8499:35;;902:2;8598:23;;8586:6;8593:1;8586:9;;;;;;;;;;;:35;;;;;;;;;;;1010:3;8643:27;;8631:6;8638:1;8631:9;;;;;;;;;;;:39;;;;;;;;;;-1:-1:-1;8784:9:76;8779:402;8803:2;8799:1;:6;8779:402;;;8892:1;8888:5;;8985:23;1232:3;8990:17;;8985:4;:23::i;:::-;8964:6;8976:5;8971:2;:10;8964:18;;;;;;;;;;;:44;;;;;;;;;;;9031:1;9026;:6;;9022:10;;9123:23;1232:3;9128:1;:17;9123:4;:23::i;:::-;9102:6;9114:5;9109:2;:10;9102:18;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;;9169:1:76;9164:6;;;;;8807:3;;8779:402;;7331:912;7425:12;7457:10;7453:51;;-1:-1:-1;7483:10:76;;;;;;;;;;;;;;;;;;;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:76;87:34:-1;135:17;;-1:-1;7734:17:76;-1:-1:-1;7843:5:76;;-1:-1:-1;7714:37:76;-1:-1:-1;7875:6:76;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:76;8197:7;;;;7858:357;;;-1:-1:-1;8232:4:76;7331:912;-1:-1:-1;;;;7331:912:76:o;3426:310:74:-;3517:6;3562;3579:127;3605:16;;;;;3635:4;3579:127;3562:6;3579:12;:127::i;6026:150:80:-;6148:6;;6121:4;;6148:21;;;;-1:-1:-1;;6158:7:80;;;:11;;;6026:150::o;3566:::-;3688:6;;3661:4;;3688:21;;;;-1:-1:-1;;3698:7:80;;;:11;;;;;3566:150::o;3409:151::-;3532:6;;3504:4;;3531:7;:22;;;;-1:-1:-1;;3542:7:80;;;:11;;;;;3409:151::o;2293:663:76:-;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;;;;14567:865:35;14803:24;;:::i;:::-;14857:31;;:::i;:::-;14902;;:::i;:::-;14946:134;14984:14;15012:12;15038;15064:6;14946:24;:134::i;:::-;14843:237;;;;15091:18;15112:110;15141:7;:13;;;15168:9;:15;;;15197:9;:15;;;15112;:110::i;:::-;15240:185;;;;;;;;;-1:-1:-1;15240:185:35;;;15091:131;;-1:-1:-1;15240:185:35;;;;;;;;;;15357:26;15240:185;;;;;;;;15233:192;-1:-1:-1;;;14567:865:35;;;;;;;;:::o;3722:137:80:-;3840:7;;;:12;;;;3722:137::o;13083:334:35:-;13234:13;;13223:25;;;;;;:10;:25;;;;;;;;13249:14;;;;;13223:41;;;;;;;;:51;;;;;;;;;;:58;;;;;;;;;;13319:13;;13346:14;;13296:114;;;;;;13319:13;13223:51;;:58;;13296:114;;5869:151:80;5992:6;;5964:4;;5991:7;:22;;;;-1:-1:-1;;6002:7:80;;;:11;;;5869:151::o;13686:875:35:-;13922:24;;:::i;:::-;13976:31;;:::i;:::-;14021;;:::i;:::-;14065:134;14103:14;14131:12;14157;14183:6;14065:24;:134::i;:::-;13962:237;;;;14210:18;14231:121;14271:7;:13;;;14298:9;:15;;;14327:9;:15;;;14231:26;:121::i;:::-;14370:184;;;;;;;;;14408:4;14370:184;;14210:142;;-1:-1:-1;14370:184:35;;;-1:-1:-1;14370:184:35;;15438:1504;15680:19;;:32;;:30;;;:32::i;:::-;15676:1260;;;15843:19;;16013:20;;;;15885:298;;15797:21;;15820:19;;15843:24;;;;;15929:62;;15885:298;;16055:10;;16087:12;;16121:10;;16153:12;;15885:298;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;15885:298:35;;;49:4:-1;25:18;;61:17;;15885:298:35;182:15:-1;15885:298:35;;;;179:29:-1;;;;160:49;;;15843:354:35;;;;15885:298;15843:354;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;15796:401:35;;;;16216:16;16212:714;;;16287:13;:19;;;16257:72;;;16308:13;:20;;;16257:72;;;;;;;;;;;;;;;16212:714;;;16388:2;16372:6;:13;:18;16368:355;;;-1:-1:-1;16423:9:35;;;;;;;;;-1:-1:-1;16423:9:35;;16368:355;;;16612:4;16604:6;16600:17;16590:27;;16686:6;16675:28;;;;;;;;;;;;;;16660:44;;16368:355;16796:13;:19;;;16745:166;;;16837:13;:20;;;16886:6;16745:166;;;;;;;;;;;;;;;;16212:714;15676:1260;;15438:1504;;;;;:::o;834:176:122:-;892:7;923:5;;;946:6;;;;938:46;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:122:o;1274:134::-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;1110:228:74:-;1263:7;1293:38;1319:11;1293:21;:6;1304:9;1293:21;:10;:21;:::i;:::-;:25;:38;:25;:38;:::i;:::-;1286:45;1110:228;-1:-1:-1;;;;1110:228:74:o;1457:188:69:-;1570:7;1600:38;1616:6;1624:1;:7;;;1006:6;1600:15;:38::i;10183:325:76:-;10272:4;10340:2;10332:5;:10;10328:79;;;-1:-1:-1;902:2:76;10376:18;;10365:31;;10358:38;;10328:79;-1:-1:-1;956:2:76;10472:27;10461:40;;;10183:325::o;2059:724:74:-;2223:7;2250:11;;;:29;;-1:-1:-1;2265:14:74;;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:74;2735:32;2765:1;2735:25;2758:1;2735:18;:11;2765:1;2735:18;:15;:18;:::i;:25::-;:29;:32;:29;:32;:::i;:::-;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;686:610:126:-;746:4;1207:20;;1052:66;1246:23;;;;;;:42;;-1:-1:-1;;1273:15:126;;;1238:51;-1:-1:-1;;686:610:126:o;1732:187:122:-;1818:7;1853:12;1845:6;;;;1837:29;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:122;;;1732:187::o;2159:459::-;2217:7;2458:6;2454:45;;-1:-1:-1;2487:1:122;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;:1;2544:5;;;;;:10;2536:56;;;;;;;;;;;;;3073:130;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;3718:338::-;3804:7;3904:12;3897:5;3889:28;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:122:o;5132:163::-;5218:7;5253:12;5245:6;5237:29;;;;;;;;;;;;;;;;5287:1;5283;:5;;;;;;;5132:163;-1:-1:-1;;;;5132:163:122:o;1843:15101:35:-;;;;;;;;;;-1:-1:-1;1843:15101:35;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;1843:15101:35;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;321:792;;471:3;464:4;456:6;452:17;448:27;438:2;;489:1;486;479:12;438:2;519:6;513:13;541:102;556:86;635:6;556:86;;;541:102;;;532:111;;660:5;685:6;678:5;671:21;715:4;707:6;703:17;693:27;;737:4;732:3;728:14;721:21;;790:6;837:3;829:4;821:6;817:17;812:3;808:27;805:36;802:2;;;854:1;851;844:12;802:2;879:1;864:243;889:6;886:1;883:13;864:243;;;947:3;969:74;1039:3;1027:10;969:74;;;957:87;;-1:-1;1067:4;1058:14;;;;1095:4;1086:14;;;;;911:1;904:9;864:243;;;868:14;431:682;;;;;;;;1121:124;1185:20;;1210:30;1185:20;1210:30;;1252:128;1327:13;;1345:30;1327:13;1345:30;;1388:440;;1489:3;1482:4;1474:6;1470:17;1466:27;1456:2;;1507:1;1504;1497:12;1456:2;1544:6;1531:20;1566:64;1581:48;1622:6;1581:48;;1566:64;1557:73;;1650:6;1643:5;1636:21;1686:4;1678:6;1674:17;1719:4;1712:5;1708:16;1754:3;1745:6;1740:3;1736:16;1733:25;1730:2;;;1771:1;1768;1761:12;1730:2;1781:41;1815:6;1810:3;1805;1781:41;;;1449:379;;;;;;;;1836:176;1935:13;;1953:54;1935:13;1953:54;;2020:436;;2129:3;2122:4;2114:6;2110:17;2106:27;2096:2;;2147:1;2144;2137:12;2096:2;2177:6;2171:13;2199:61;2214:45;2252:6;2214:45;;2199:61;2190:70;;2280:6;2273:5;2266:21;2316:4;2308:6;2304:17;2349:4;2342:5;2338:16;2384:3;2375:6;2370:3;2366:16;2363:25;2360:2;;;2401:1;2398;2391:12;2360:2;2411:39;2443:6;2438:3;2433;2411:39;;2490:344;;2613:4;2601:9;2596:3;2592:19;2588:30;2585:2;;;2631:1;2628;2621:12;2585:2;2649:20;2664:4;2649:20;;;2640:29;-1:-1;2720:1;2752:60;2808:3;2788:9;2752:60;;;2727:86;;-1:-1;2738:5;2579:255;-1:-1;;2579:255;2867:497;;2986:4;2974:9;2969:3;2965:19;2961:30;2958:2;;;3004:1;3001;2994:12;2958:2;3022:20;3037:4;3022:20;;;3013:29;-1:-1;3093:1;3125:60;3181:3;3161:9;3125:60;;;3100:86;;-1:-1;3249:2;3282:60;3338:3;3314:22;;;3282:60;;;3275:4;3268:5;3264:16;3257:86;3207:147;2952:412;;;;;3397:468;;3509:4;3497:9;3492:3;3488:19;3484:30;3481:2;;;3527:1;3524;3517:12;3481:2;3545:20;3560:4;3545:20;;;3536:29;-1:-1;3616:1;3648:49;3693:3;3673:9;3648:49;;;3623:75;;-1:-1;3761:2;3794:49;3839:3;3815:22;;;3794:49;;3895:462;;4006:4;3994:9;3989:3;3985:19;3981:30;3978:2;;;4024:1;4021;4014:12;3978:2;4042:20;4057:4;4042:20;;;4033:29;-1:-1;4112:1;4144:46;4186:3;4166:9;4144:46;;;4119:72;;-1:-1;4253:2;4286:49;4331:3;4307:22;;;4286:49;;4387:495;;4509:4;4497:9;4492:3;4488:19;4484:30;4481:2;;;4527:1;4524;4517:12;4481:2;4545:20;4560:4;4545:20;;;4536:29;-1:-1;4615:1;4647:57;4700:3;4680:9;4647:57;;;4622:83;;-1:-1;4767:2;4800:60;4856:3;4832:22;;;4800:60;;5305:512;;5433:4;5421:9;5416:3;5412:19;5408:30;5405:2;;;5451:1;5448;5441:12;5405:2;5469:20;5484:4;5469:20;;;5460:29;-1:-1;5541:1;5573:60;5629:3;5609:9;5573:60;;;5548:86;;-1:-1;5703:2;5736:59;5791:3;5767:22;;;5736:59;;5858:846;;5984:4;5972:9;5967:3;5963:19;5959:30;5956:2;;;6002:1;5999;5992:12;5956:2;6020:20;6035:4;6020:20;;;6011:29;-1:-1;6093:1;6125:79;6200:3;6180:9;6125:79;;;6100:105;;-1:-1;6270:2;6303:60;6359:3;6335:22;;;6303:60;;;6296:4;6289:5;6285:16;6278:86;6226:149;6430:2;6463:59;6518:3;6509:6;6498:9;6494:22;6463:59;;;6456:4;6449:5;6445:16;6438:85;6385:149;6591:3;6625:57;6678:3;6669:6;6658:9;6654:22;6625:57;;;6618:4;6611:5;6607:16;6600:83;6544:150;5950:754;;;;;6734:462;;6845:4;6833:9;6828:3;6824:19;6820:30;6817:2;;;6863:1;6860;6853:12;6817:2;6881:20;6896:4;6881:20;;;6872:29;-1:-1;6951:1;6983:46;7025:3;7005:9;6983:46;;7226:495;;7348:4;7336:9;7331:3;7327:19;7323:30;7320:2;;;7366:1;7363;7356:12;7320:2;7384:20;7399:4;7384:20;;;7375:29;-1:-1;7454:1;7486:57;7539:3;7519:9;7486:57;;7728:130;7795:20;;7820:33;7795:20;7820:33;;7865:134;7943:13;;7961:33;7943:13;7961:33;;8006:130;8073:20;;8098:33;8073:20;8098:33;;8143:134;8221:13;;8239:33;8221:13;8239:33;;8284:128;8350:20;;8375:32;8350:20;8375:32;;8419:132;8496:13;;8514:32;8496:13;8514:32;;8558:241;;8662:2;8650:9;8641:7;8637:23;8633:32;8630:2;;;8678:1;8675;8668:12;8630:2;8713:1;8730:53;8775:7;8755:9;8730:53;;8806:366;;;8927:2;8915:9;8906:7;8902:23;8898:32;8895:2;;;8943:1;8940;8933:12;8895:2;8978:1;8995:53;9040:7;9020:9;8995:53;;;8985:63;;8957:97;9085:2;9103:53;9148:7;9139:6;9128:9;9124:22;9103:53;;;9093:63;;9064:98;8889:283;;;;;;9179:642;;;;9349:3;9337:9;9328:7;9324:23;9320:33;9317:2;;;9366:1;9363;9356:12;9317:2;9401:1;9418:53;9463:7;9443:9;9418:53;;;9408:63;;9380:97;9508:2;9526:76;9594:7;9585:6;9574:9;9570:22;9526:76;;;9516:86;;9487:121;9667:2;9656:9;9652:18;9639:32;9691:18;9683:6;9680:30;9677:2;;;9723:1;9720;9713:12;9677:2;9743:62;9797:7;9788:6;9777:9;9773:22;9743:62;;;9733:72;;9618:193;9311:510;;;;;;9828:364;;;9948:2;9936:9;9927:7;9923:23;9919:32;9916:2;;;9964:1;9961;9954:12;9916:2;9999:1;10016:53;10061:7;10041:9;10016:53;;;10006:63;;9978:97;10106:2;10124:52;10168:7;10159:6;10148:9;10144:22;10124:52;;10199:305;;10335:2;10323:9;10314:7;10310:23;10306:32;10303:2;;;10351:1;10348;10341:12;10303:2;10386:1;10403:85;10480:7;10460:9;10403:85;;10511:614;;;10711:2;10699:9;10690:7;10686:23;10682:32;10679:2;;;10727:1;10724;10717:12;10679:2;10762:1;10779:85;10856:7;10836:9;10779:85;;;10769:95;;10741:129;10922:2;10911:9;10907:18;10901:25;10946:18;10938:6;10935:30;10932:2;;;10978:1;10975;10968:12;10932:2;10998:111;11101:7;11092:6;11081:9;11077:22;10998:111;;11132:497;;;11313:2;11301:9;11292:7;11288:23;11284:32;11281:2;;;11329:1;11326;11319:12;11281:2;11364:1;11381:85;11458:7;11438:9;11381:85;;;11371:95;;11343:129;11503:2;11521:92;11605:7;11596:6;11585:9;11581:22;11521:92;;11636:354;;11757:2;11745:9;11736:7;11732:23;11728:32;11725:2;;;11773:1;11770;11763:12;11725:2;11808:24;;11852:18;11841:30;;11838:2;;;11884:1;11881;11874:12;11838:2;11904:70;11966:7;11957:6;11946:9;11942:22;11904:70;;11997:309;;12135:2;12123:9;12114:7;12110:23;12106:32;12103:2;;;12151:1;12148;12141:12;12103:2;12186:1;12203:87;12282:7;12262:9;12203:87;;12313:412;;;12457:2;12445:9;12436:7;12432:23;12428:32;12425:2;;;12473:1;12470;12463:12;12425:2;12508:1;12525:76;12593:7;12573:9;12525:76;;;12515:86;;12487:120;12638:2;12656:53;12701:7;12692:6;12681:9;12677:22;12656:53;;12732:307;;12869:2;12857:9;12848:7;12844:23;12840:32;12837:2;;;12885:1;12882;12875:12;12837:2;12920:1;12937:86;13015:7;12995:9;12937:86;;13364:307;;13501:2;13489:9;13480:7;13476:23;13472:32;13469:2;;;13517:1;13514;13507:12;13469:2;13552:1;13569:86;13647:7;13627:9;13569:86;;13678:241;;13782:2;13770:9;13761:7;13757:23;13753:32;13750:2;;;13798:1;13795;13788:12;13750:2;13833:1;13850:53;13895:7;13875:9;13850:53;;13926:1450;;;;;;;;;14270:3;14258:9;14249:7;14245:23;14241:33;14238:2;;;14287:1;14284;14277:12;14238:2;14322:1;14339:53;14384:7;14364:9;14339:53;;;14329:63;;14301:97;14429:2;14447:53;14492:7;14483:6;14472:9;14468:22;14447:53;;;14437:63;;14408:98;14537:2;14555:76;14623:7;14614:6;14603:9;14599:22;14555:76;;;14545:86;;14516:121;14668:3;14687:76;14755:7;14746:6;14735:9;14731:22;14687:76;;;14677:86;;14647:122;14800:3;14819:75;14886:7;14877:6;14866:9;14862:22;14819:75;;;14809:85;;14779:121;14931:3;14950:75;15017:7;15008:6;14997:9;14993:22;14950:75;;;14940:85;;14910:121;15062:3;15081:75;15148:7;15139:6;15128:9;15124:22;15081:75;;;15071:85;;15041:121;15221:3;15210:9;15206:19;15193:33;15246:18;15238:6;15235:30;15232:2;;;15278:1;15275;15268:12;15232:2;15298:62;15352:7;15343:6;15332:9;15328:22;15298:62;;;15288:72;;15172:194;14232:1144;;;;;;;;;;;;15383:489;;;;15520:2;15508:9;15499:7;15495:23;15491:32;15488:2;;;15536:1;15533;15526:12;15488:2;15571:1;15588:53;15633:7;15613:9;15588:53;;;15578:63;;15550:97;15678:2;15696:53;15741:7;15732:6;15721:9;15717:22;15696:53;;;15686:63;;15657:98;15786:2;15804:52;15848:7;15839:6;15828:9;15824:22;15804:52;;15879:397;;;16010:2;15998:9;15989:7;15985:23;15981:32;15978:2;;;16026:1;16023;16016:12;15978:2;16061:1;16078:64;16134:7;16114:9;16078:64;;;16068:74;;16040:108;16179:2;16197:63;16252:7;16243:6;16232:9;16228:22;16197:63;;16283:103;16356:24;16374:5;16356:24;;;16351:3;16344:37;16338:48;;;16513:94;16580:21;16595:5;16580:21;;16725:148;16824:43;16843:23;16860:5;16843:23;;;16824:43;;16880:148;16979:43;16998:23;17015:5;16998:23;;17035:152;17136:45;17156:24;17174:5;17156:24;;17194:356;;17322:38;17354:5;17322:38;;;17372:88;17453:6;17448:3;17372:88;;;17365:95;;17465:52;17510:6;17505:3;17498:4;17491:5;17487:16;17465:52;;;17529:16;;;;;17302:248;-1:-1;;17302:248;17557:176;17665:62;17721:5;17665:62;;17740:158;17834:58;17886:5;17834:58;;18064:347;;18176:39;18209:5;18176:39;;;18227:71;18291:6;18286:3;18227:71;;;18220:78;;18303:52;18348:6;18343:3;18336:4;18329:5;18325:16;18303:52;;;18376:29;18398:6;18376:29;;;18367:39;;;;18156:255;-1:-1;;;18156:255;18419:375;;18579:67;18643:2;18638:3;18579:67;;;18679:34;18659:55;;18748:8;18743:2;18734:12;;18727:30;18785:2;18776:12;;18565:229;-1:-1;;18565:229;18803:327;;18963:67;19027:2;19022:3;18963:67;;;19063:29;19043:50;;19121:2;19112:12;;18949:181;-1:-1;;18949:181;19139:370;;19299:67;19363:2;19358:3;19299:67;;;19399:34;19379:55;;19468:3;19463:2;19454:12;;19447:25;19500:2;19491:12;;19285:224;-1:-1;;19285:224;19518:332;;19678:67;19742:2;19737:3;19678:67;;;19778:34;19758:55;;19841:2;19832:12;;19664:186;-1:-1;;19664:186;19917:835;20136:23;;20070:4;20061:14;;;20165:57;20065:3;20136:23;20165:57;;;20090:138;20309:4;20302:5;20298:16;20292:23;20321:84;20399:4;20394:3;20390:14;20376:12;20321:84;;;20238:173;20483:4;20476:5;20472:16;20466:23;20495:81;20570:4;20565:3;20561:14;20547:12;20495:81;;;20421:161;20656:4;20649:5;20645:16;20639:23;20668:63;20725:4;20720:3;20716:14;20702:12;20668:63;;20808:475;21014:23;;20947:4;20938:14;;;21043:63;20942:3;21014:23;21043:63;;;20967:145;21187:4;21180:5;21176:16;21170:23;21199:63;21256:4;21251:3;21247:14;21233:12;21199:63;;21870:321;22078:23;;22011:4;22002:14;;;22107:63;22006:3;22078:23;22107:63;;22241:465;22444:23;;22378:4;22369:14;;;22473:57;22373:3;22444:23;22473:57;;22713:103;22786:24;22804:5;22786:24;;22943:110;23024:23;23041:5;23024:23;;23060:244;;23179:75;23250:3;23241:6;23179:75;;;-1:-1;23276:2;23267:12;;23167:137;-1:-1;23167:137;23311:262;;23455:93;23544:3;23535:6;23455:93;;23580:978;;23894:93;23983:3;23974:6;23894:93;;;23887:100;;23998:73;24067:3;24058:6;23998:73;;;24093:1;24088:3;24084:11;24077:18;;24113:93;24202:3;24193:6;24113:93;;;24106:100;;24217:73;24286:3;24277:6;24217:73;;;24312:1;24307:3;24303:11;24296:18;;24332:93;24421:3;24412:6;24332:93;;;24325:100;;24436:73;24505:3;24496:6;24436:73;;;-1:-1;24531:1;24522:11;;23875:683;-1:-1;;;;;;23875:683;24565:1269;;24951:93;25040:3;25031:6;24951:93;;;24944:100;;25055:73;25124:3;25115:6;25055:73;;;25150:1;25145:3;25141:11;25134:18;;25170:93;25259:3;25250:6;25170:93;;;25163:100;;25274:73;25343:3;25334:6;25274:73;;;25369:1;25364:3;25360:11;25353:18;;25389:93;25478:3;25469:6;25389:93;;;25382:100;;25493:73;25562:3;25553:6;25493:73;;;25588:1;25583:3;25579:11;25572:18;;25608:93;25697:3;25688:6;25608:93;;;25601:100;;25712:73;25781:3;25772:6;25712:73;;;-1:-1;25807:1;25798:11;;24932:902;-1:-1;;;;;;;;24932:902;25841:1560;;26299:93;26388:3;26379:6;26299:93;;;26292:100;;26403:73;26472:3;26463:6;26403:73;;;26498:1;26493:3;26489:11;26482:18;;26518:93;26607:3;26598:6;26518:93;;;26511:100;;26622:73;26691:3;26682:6;26622:73;;;26717:1;26712:3;26708:11;26701:18;;26737:93;26826:3;26817:6;26737:93;;;26730:100;;26841:73;26910:3;26901:6;26841:73;;;26936:1;26931:3;26927:11;26920:18;;26956:93;27045:3;27036:6;26956:93;;;26949:100;;27060:73;27129:3;27120:6;27060:73;;;27155:1;27150:3;27146:11;27139:18;;27175:93;27264:3;27255:6;27175:93;;;27168:100;;27279:73;27348:3;27339:6;27279:73;;;-1:-1;27374:1;27365:11;;26280:1121;-1:-1;;;;;;;;;;26280:1121;27408:213;27526:2;27511:18;;27540:71;27515:9;27584:6;27540:71;;27628:431;27800:2;27785:18;;27814:71;27789:9;27858:6;27814:71;;;27896:72;27964:2;27953:9;27949:18;27940:6;27896:72;;;27979:70;28045:2;28034:9;28030:18;28021:6;27979:70;;28066:543;28266:3;28251:19;;28281:71;28255:9;28325:6;28281:71;;;28363:72;28431:2;28420:9;28416:18;28407:6;28363:72;;;28446;28514:2;28503:9;28499:18;28490:6;28446:72;;;28529:70;28595:2;28584:9;28580:18;28571:6;28529:70;;28616:201;28728:2;28713:18;;28742:65;28717:9;28780:6;28742:65;;28824:263;28967:2;28952:18;;28981:96;28956:9;29050:6;28981:96;;29094:301;29232:2;29246:47;;;29217:18;;29307:78;29217:18;29371:6;29307:78;;29402:407;29593:2;29607:47;;;29578:18;;29668:131;29578:18;29668:131;;29816:407;30007:2;30021:47;;;29992:18;;30082:131;29992:18;30082:131;;30230:407;30421:2;30435:47;;;30406:18;;30496:131;30406:18;30496:131;;30644:407;30835:2;30849:47;;;30820:18;;30910:131;30820:18;30910:131;;31058:334;31236:3;31221:19;;31251:131;31225:9;31355:6;31251:131;;31399:416;31591:2;31576:18;;31605:117;31580:9;31695:6;31605:117;;;31733:72;31801:2;31790:9;31786:18;31777:6;31733:72;;32237:516;32479:2;32464:18;;32493:119;32468:9;32585:6;32493:119;;;32623:120;32739:2;32728:9;32724:18;32715:6;32623:120;;32760:213;32878:2;32863:18;;32892:71;32867:9;32936:6;32892:71;;32980:412;33146:2;33131:18;;33160:71;33135:9;33204:6;33160:71;;;33279:9;33273:4;33269:20;33264:2;33253:9;33249:18;33242:48;33304:78;33377:4;33368:6;33304:78;;33399:324;33545:2;33530:18;;33559:71;33534:9;33603:6;33559:71;;;33641:72;33709:2;33698:9;33694:18;33685:6;33641:72;;33730:836;34048:3;34033:19;;34063:71;34037:9;34107:6;34063:71;;;34145:72;34213:2;34202:9;34198:18;34189:6;34145:72;;;34228:116;34340:2;34329:9;34325:18;34316:6;34228:116;;;34355:73;34423:3;34412:9;34408:19;34399:6;34355:73;;;34439:117;34551:3;34540:9;34536:19;34527:6;34439:117;;;34019:547;;;;;;;;;34573:209;34689:2;34674:18;;34703:69;34678:9;34745:6;34703:69;;34789:256;34851:2;34845:9;34877:17;;;34952:18;34937:34;;34973:22;;;34934:62;34931:2;;;35009:1;35006;34999:12;34931:2;35025;35018:22;34829:216;;-1:-1;34829:216;35052:326;;35233:18;35225:6;35222:30;35219:2;;;35265:1;35262;35255:12;35219:2;-1:-1;35300:4;35288:17;;;35353:15;;35156:222;35385:321;;35528:18;35520:6;35517:30;35514:2;;;35560:1;35557;35550:12;35514:2;-1:-1;35691:4;35627;35604:17;;;;35623:9;35600:33;35681:15;;35451:255;36038:121;36125:12;;36096:63;36449:163;36552:19;;;36601:4;36592:14;;36545:67;36620:91;;36682:24;36700:5;36682:24;;36718:85;36784:13;36777:21;;36760:43;36810:144;36882:66;36871:78;;36854:100;36961:144;37033:66;37022:78;;37005:100;37112:72;37174:5;37157:27;37191:152;37276:5;37282:56;37276:5;37282:56;;37503:113;37576:34;37565:46;;37548:68;37623:121;37696:42;37685:54;;37668:76;37830:88;37902:10;37891:22;;37874:44;37925:171;;38029:62;38085:5;38029:62;;38243:152;;38343:47;38384:5;38343:47;;38556:145;38637:6;38632:3;38627;38614:30;-1:-1;38693:1;38675:16;;38668:27;38607:94;38710:268;38775:1;38782:101;38796:6;38793:1;38790:13;38782:101;;;38863:11;;;38857:18;38844:11;;;38837:39;38818:2;38811:10;38782:101;;;38898:6;38895:1;38892:13;38889:2;;;-1:-1;;38963:1;38945:16;;38938:27;38759:219;39227:97;39315:2;39295:14;39311:7;39291:28;;39275:49;39332:114;39424:1;39417:5;39414:12;39404:2;;39430:9;39571:117;39640:24;39658:5;39640:24;;;39633:5;39630:35;39620:2;;39679:1;39676;39669:12;39695:111;39761:21;39776:5;39761:21;;39813:115;39903:1;39896:5;39893:12;39883:2;;39919:1;39916;39909:12;39935:117;40004:24;40022:5;40004:24;;40059:117;40128:24;40146:5;40128:24;;40183:115;40251:23;40268:5;40251:23;",
567
567
  "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 { SafeMath } from \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport { Ownable } from \"@openzeppelin/contracts/ownership/Ownable.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { IAutoTrader } from \"../../protocol/interfaces/IAutoTrader.sol\";\nimport { ICallee } from \"../../protocol/interfaces/ICallee.sol\";\nimport { IDolomiteMargin } from \"../../protocol/interfaces/IDolomiteMargin.sol\";\nimport { ILiquidationCallback } from \"../../protocol/interfaces/ILiquidationCallback.sol\";\nimport { Account } from \"../../protocol/lib/Account.sol\";\nimport { Decimal } from \"../../protocol/lib/Decimal.sol\";\nimport { Math } from \"../../protocol/lib/Math.sol\";\nimport { Monetary } from \"../../protocol/lib/Monetary.sol\";\nimport { Require } from \"../../protocol/lib/Require.sol\";\nimport { Time } from \"../../protocol/lib/Time.sol\";\nimport { Types } from \"../../protocol/lib/Types.sol\";\nimport { OnlyDolomiteMargin } from \"../helpers/OnlyDolomiteMargin.sol\";\nimport { IExpiry } from \"../interfaces/IExpiry.sol\";\n\n\n/**\n * @title Expiry\n * @author dYdX\n *\n * Expiry contract that also allows approved senders to set expiry to be 28 days in the future.\n */\ncontract Expiry is\n Ownable,\n OnlyDolomiteMargin,\n IExpiry,\n ICallee,\n IAutoTrader\n{\n using Address for address;\n using Math for uint256;\n using SafeMath for uint32;\n using SafeMath for uint256;\n using Types for Types.Par;\n using Types for Types.Wei;\n\n // ============ Constants ============\n\n bytes32 constant FILE = \"Expiry\";\n\n // ============ Events ============\n\n event ExpirySet(\n address owner,\n uint256 number,\n uint256 marketId,\n uint32 time\n );\n\n event LogExpiryRampTimeSet(\n uint256 expiryRampTime\n );\n\n event LogSenderApproved(\n address approver,\n address sender,\n uint32 minTimeDelta\n );\n\n event LogLiquidationCallbackSuccess(address indexed liquidAccountOwner, uint liquidAccountNumber);\n\n event LogLiquidationCallbackFailure(address indexed liquidAccountOwner, uint liquidAccountNumber, string reason);\n\n // ============ Storage ============\n\n // owner => number => market => time\n mapping (address => mapping (uint256 => mapping (uint256 => uint32))) g_expiries;\n\n // owner => sender => minimum time delta\n mapping (address => mapping (address => uint32)) public g_approvedSender;\n\n // time over which the liquidation ratio goes from zero to maximum\n uint256 public g_expiryRampTime;\n\n // ============ Constructor ============\n\n constructor (\n address dolomiteMargin,\n uint256 expiryRampTime\n )\n public\n OnlyDolomiteMargin(dolomiteMargin)\n {\n g_expiryRampTime = expiryRampTime;\n }\n\n // ============ Admin Functions ============\n\n function ownerSetExpiryRampTime(\n uint256 newExpiryRampTime\n )\n external\n onlyOwner\n {\n emit LogExpiryRampTimeSet(newExpiryRampTime);\n g_expiryRampTime = newExpiryRampTime;\n }\n\n // ============ Approval Functions ============\n\n function approveSender(\n address sender,\n uint32 minTimeDelta\n )\n external\n {\n _setApproval(msg.sender, sender, minTimeDelta);\n }\n\n // ============ Only-DolomiteMargin Functions ============\n\n function callFunction(\n address /* sender */,\n Account.Info memory account,\n bytes memory data\n )\n public\n onlyDolomiteMargin(msg.sender)\n {\n CallFunctionType callType = abi.decode(data, (CallFunctionType));\n if (callType == CallFunctionType.SetExpiry) {\n _callFunctionSetExpiry(account.owner, data);\n } else {\n _callFunctionSetApproval(account.owner, data);\n }\n }\n\n function getTradeCost(\n uint256 inputMarketId,\n uint256 outputMarketId,\n Account.Info memory makerAccount,\n Account.Info memory /* takerAccount */,\n Types.Par memory oldInputPar,\n Types.Par memory newInputPar,\n Types.Wei memory inputWei,\n bytes memory data\n )\n public\n onlyDolomiteMargin(msg.sender)\n returns (Types.AssetAmount memory)\n {\n // return zero if input amount is zero\n if (inputWei.isZero()) {\n return Types.AssetAmount({\n sign: true,\n denomination: Types.AssetDenomination.Par,\n ref: Types.AssetReference.Delta,\n value: 0\n });\n }\n\n (uint256 owedMarketId, uint32 maxExpiry) = abi.decode(data, (uint256, uint32));\n\n uint32 expiry = getExpiry(makerAccount, owedMarketId);\n\n // validate expiry\n Require.that(\n expiry != 0,\n FILE,\n \"Expiry not set\",\n makerAccount.owner,\n makerAccount.number,\n owedMarketId\n );\n Require.that(\n expiry <= Time.currentTime(),\n FILE,\n \"Borrow not yet expired\",\n expiry\n );\n Require.that(\n expiry <= maxExpiry,\n FILE,\n \"Expiry past maxExpiry\",\n expiry\n );\n\n return _getTradeCostInternal(\n DOLOMITE_MARGIN,\n inputMarketId,\n outputMarketId,\n makerAccount,\n oldInputPar,\n newInputPar,\n inputWei,\n owedMarketId,\n expiry\n );\n }\n\n // ============ Getters ============\n\n function getExpiry(\n Account.Info memory account,\n uint256 marketId\n )\n public\n view\n returns (uint32)\n {\n return g_expiries[account.owner][account.number][marketId];\n }\n\n function getSpreadAdjustedPrices(\n uint256 heldMarketId,\n uint256 owedMarketId,\n uint32 expiry\n )\n public\n view\n returns (\n Monetary.Price memory,\n Monetary.Price memory\n )\n {\n return _getSpreadAdjustedPrices(\n DOLOMITE_MARGIN,\n heldMarketId,\n owedMarketId,\n expiry\n );\n }\n\n // ============ Private Functions ============\n\n function _getSpreadAdjustedPrices(\n IDolomiteMargin dolomiteMargin,\n uint256 heldMarketId,\n uint256 owedMarketId,\n uint32 expiry\n )\n private\n view\n returns (\n Monetary.Price memory,\n Monetary.Price memory\n )\n {\n Decimal.D256 memory spread = dolomiteMargin.getLiquidationSpreadForPair(\n heldMarketId,\n owedMarketId\n );\n\n uint256 expiryAge = Time.currentTime().sub(expiry);\n\n if (expiryAge < g_expiryRampTime) {\n spread.value = Math.getPartial(spread.value, expiryAge, g_expiryRampTime);\n }\n\n Monetary.Price memory heldPrice = dolomiteMargin.getMarketPrice(heldMarketId);\n Monetary.Price memory owedPrice = dolomiteMargin.getMarketPrice(owedMarketId);\n owedPrice.value = owedPrice.value.add(Decimal.mul(owedPrice.value, spread));\n\n return (heldPrice, owedPrice);\n }\n\n function _callFunctionSetExpiry(\n address sender,\n bytes memory data\n )\n private\n {\n (\n CallFunctionType callType,\n SetExpiryArg[] memory expiries\n ) = abi.decode(data, (CallFunctionType, SetExpiryArg[]));\n\n assert(callType == CallFunctionType.SetExpiry);\n\n for (uint256 i = 0; i < expiries.length; i++) {\n SetExpiryArg memory exp = expiries[i];\n if (exp.account.owner != sender) {\n // don't do anything if sender is not approved for this action\n uint32 minApprovedTimeDelta = g_approvedSender[exp.account.owner][sender];\n if (minApprovedTimeDelta == 0 || exp.timeDelta < minApprovedTimeDelta) {\n continue;\n }\n }\n\n // if timeDelta is zero, interpret it as unset expiry\n if (\n exp.timeDelta != 0 &&\n DOLOMITE_MARGIN.getAccountPar(exp.account, exp.marketId).isNegative()\n ) {\n // only change non-zero values if forceUpdate is true\n if (exp.forceUpdate || getExpiry(exp.account, exp.marketId) == 0) {\n uint32 newExpiryTime = Time.currentTime().add(exp.timeDelta).to32();\n _setExpiry(exp.account, exp.marketId, newExpiryTime);\n }\n } else {\n // timeDelta is zero or account has non-negative balance\n _setExpiry(exp.account, exp.marketId, 0);\n }\n }\n }\n\n function _callFunctionSetApproval(\n address sender,\n bytes memory data\n )\n private\n {\n (\n CallFunctionType callType,\n SetApprovalArg memory approvalArg\n ) = abi.decode(data, (CallFunctionType, SetApprovalArg));\n assert(callType == CallFunctionType.SetApproval);\n _setApproval(sender, approvalArg.sender, approvalArg.minTimeDelta);\n }\n\n function _getTradeCostInternal(\n IDolomiteMargin dolomiteMargin,\n uint256 inputMarketId,\n uint256 outputMarketId,\n Account.Info memory makerAccount,\n Types.Par memory oldInputPar,\n Types.Par memory newInputPar,\n Types.Wei memory inputWei,\n uint256 owedMarketId,\n uint32 expiry\n )\n private\n returns (Types.AssetAmount memory)\n {\n Types.AssetAmount memory output;\n Types.Wei memory maxOutputWei = dolomiteMargin.getAccountWei(makerAccount, outputMarketId);\n\n if (inputWei.isPositive()) {\n Require.that(\n inputMarketId == owedMarketId,\n FILE,\n \"inputMarket mismatch\",\n inputMarketId\n );\n Require.that(\n !newInputPar.isPositive(),\n FILE,\n \"Borrows cannot be overpaid\",\n newInputPar.value\n );\n assert(oldInputPar.isNegative());\n Require.that(\n maxOutputWei.isPositive(),\n FILE,\n \"Collateral must be positive\",\n outputMarketId,\n maxOutputWei.value\n );\n output = _owedWeiToHeldWei(\n dolomiteMargin,\n inputWei,\n outputMarketId,\n inputMarketId,\n expiry\n );\n\n // clear expiry if borrow is fully repaid\n if (newInputPar.isZero()) {\n _setExpiry(makerAccount, owedMarketId, 0);\n }\n } else {\n Require.that(\n outputMarketId == owedMarketId,\n FILE,\n \"outputMarket mismatch\",\n outputMarketId\n );\n Require.that(\n !newInputPar.isNegative(),\n FILE,\n \"Collateral cannot be overused\",\n newInputPar.value\n );\n assert(oldInputPar.isPositive());\n Require.that(\n maxOutputWei.isNegative(),\n FILE,\n \"Borrows must be negative\",\n outputMarketId,\n maxOutputWei.value\n );\n output = _heldWeiToOwedWei(\n dolomiteMargin,\n inputWei,\n inputMarketId,\n outputMarketId,\n expiry\n );\n\n // clear expiry if borrow is fully repaid\n if (output.value == maxOutputWei.value) {\n _setExpiry(makerAccount, owedMarketId, 0);\n }\n }\n\n Require.that(\n output.value <= maxOutputWei.value,\n FILE,\n \"outputMarket too small\",\n output.value,\n maxOutputWei.value\n );\n assert(output.sign != maxOutputWei.sign);\n\n _callLiquidateCallbackIfNecessary(\n makerAccount,\n owedMarketId == inputMarketId ? outputMarketId : inputMarketId,\n owedMarketId == inputMarketId ? Types.Wei(output.sign, output.value) : inputWei,\n owedMarketId,\n owedMarketId == inputMarketId ? inputWei : Types.Wei(output.sign, output.value)\n );\n\n return output;\n }\n\n function _setExpiry(\n Account.Info memory account,\n uint256 marketId,\n uint32 time\n )\n private\n {\n g_expiries[account.owner][account.number][marketId] = time;\n emit ExpirySet(\n account.owner,\n account.number,\n marketId,\n time\n );\n }\n\n function _setApproval(\n address approver,\n address sender,\n uint32 minTimeDelta\n )\n private\n {\n g_approvedSender[approver][sender] = minTimeDelta;\n emit LogSenderApproved(approver, sender, minTimeDelta);\n }\n\n function _heldWeiToOwedWei(\n IDolomiteMargin dolomiteMargin,\n Types.Wei memory heldWei,\n uint256 heldMarketId,\n uint256 owedMarketId,\n uint32 expiry\n )\n private\n view\n returns (Types.AssetAmount memory)\n {\n (\n Monetary.Price memory heldPrice,\n Monetary.Price memory owedPrice\n ) = _getSpreadAdjustedPrices(\n dolomiteMargin,\n heldMarketId,\n owedMarketId,\n expiry\n );\n\n uint256 owedAmount = Math.getPartialRoundHalfUp(\n heldWei.value,\n heldPrice.value,\n owedPrice.value\n );\n\n return Types.AssetAmount({\n sign: true,\n denomination: Types.AssetDenomination.Wei,\n ref: Types.AssetReference.Delta,\n value: owedAmount\n });\n }\n\n function _owedWeiToHeldWei(\n IDolomiteMargin dolomiteMargin,\n Types.Wei memory owedWei,\n uint256 heldMarketId,\n uint256 owedMarketId,\n uint32 expiry\n )\n private\n view\n returns (Types.AssetAmount memory)\n {\n (\n Monetary.Price memory heldPrice,\n Monetary.Price memory owedPrice\n ) = _getSpreadAdjustedPrices(\n dolomiteMargin,\n heldMarketId,\n owedMarketId,\n expiry\n );\n\n uint256 heldAmount = Math.getPartial(\n owedWei.value,\n owedPrice.value,\n heldPrice.value\n );\n\n return Types.AssetAmount({\n sign: false,\n denomination: Types.AssetDenomination.Wei,\n ref: Types.AssetReference.Delta,\n value: heldAmount\n });\n }\n\n function _callLiquidateCallbackIfNecessary(\n Account.Info memory liquidAccount,\n uint heldMarket,\n Types.Wei memory heldDeltaWei,\n uint owedMarket,\n Types.Wei memory owedDeltaWei\n ) private {\n if (liquidAccount.owner.isContract()) {\n // solium-disable-next-line security/no-low-level-calls\n (bool isCallSuccessful, bytes memory result) = liquidAccount.owner.call(\n abi.encodeWithSelector(\n ILiquidationCallback(liquidAccount.owner).onLiquidate.selector,\n liquidAccount.number,\n heldMarket,\n heldDeltaWei,\n owedMarket,\n owedDeltaWei\n )\n );\n\n if (isCallSuccessful) {\n emit LogLiquidationCallbackSuccess(liquidAccount.owner, liquidAccount.number);\n } else {\n if (result.length < 68) {\n result = bytes(\"\");\n } else {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n result := add(result, 0x04)\n }\n result = bytes(abi.decode(result, (string)));\n }\n emit LogLiquidationCallbackFailure(\n liquidAccount.owner,\n liquidAccount.number,\n string(result)\n );\n }\n }\n }\n}\n",
568
- "sourcePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/traders/Expiry.sol",
568
+ "sourcePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/traders/Expiry.sol",
569
569
  "ast": {
570
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/traders/Expiry.sol",
570
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/traders/Expiry.sol",
571
571
  "exportedSymbols": {
572
572
  "Expiry": [
573
573
  17599
@@ -645,7 +645,7 @@
645
645
  "unitAlias": ""
646
646
  },
647
647
  {
648
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IAutoTrader.sol",
648
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IAutoTrader.sol",
649
649
  "file": "../../protocol/interfaces/IAutoTrader.sol",
650
650
  "id": 16504,
651
651
  "nodeType": "ImportDirective",
@@ -661,7 +661,7 @@
661
661
  "unitAlias": ""
662
662
  },
663
663
  {
664
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/ICallee.sol",
664
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/ICallee.sol",
665
665
  "file": "../../protocol/interfaces/ICallee.sol",
666
666
  "id": 16506,
667
667
  "nodeType": "ImportDirective",
@@ -677,7 +677,7 @@
677
677
  "unitAlias": ""
678
678
  },
679
679
  {
680
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol",
680
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IDolomiteMargin.sol",
681
681
  "file": "../../protocol/interfaces/IDolomiteMargin.sol",
682
682
  "id": 16508,
683
683
  "nodeType": "ImportDirective",
@@ -693,7 +693,7 @@
693
693
  "unitAlias": ""
694
694
  },
695
695
  {
696
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/ILiquidationCallback.sol",
696
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/ILiquidationCallback.sol",
697
697
  "file": "../../protocol/interfaces/ILiquidationCallback.sol",
698
698
  "id": 16510,
699
699
  "nodeType": "ImportDirective",
@@ -709,7 +709,7 @@
709
709
  "unitAlias": ""
710
710
  },
711
711
  {
712
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol",
712
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Account.sol",
713
713
  "file": "../../protocol/lib/Account.sol",
714
714
  "id": 16512,
715
715
  "nodeType": "ImportDirective",
@@ -725,7 +725,7 @@
725
725
  "unitAlias": ""
726
726
  },
727
727
  {
728
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol",
728
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Decimal.sol",
729
729
  "file": "../../protocol/lib/Decimal.sol",
730
730
  "id": 16514,
731
731
  "nodeType": "ImportDirective",
@@ -741,7 +741,7 @@
741
741
  "unitAlias": ""
742
742
  },
743
743
  {
744
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Math.sol",
744
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Math.sol",
745
745
  "file": "../../protocol/lib/Math.sol",
746
746
  "id": 16516,
747
747
  "nodeType": "ImportDirective",
@@ -757,7 +757,7 @@
757
757
  "unitAlias": ""
758
758
  },
759
759
  {
760
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol",
760
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Monetary.sol",
761
761
  "file": "../../protocol/lib/Monetary.sol",
762
762
  "id": 16518,
763
763
  "nodeType": "ImportDirective",
@@ -773,7 +773,7 @@
773
773
  "unitAlias": ""
774
774
  },
775
775
  {
776
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
776
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Require.sol",
777
777
  "file": "../../protocol/lib/Require.sol",
778
778
  "id": 16520,
779
779
  "nodeType": "ImportDirective",
@@ -789,7 +789,7 @@
789
789
  "unitAlias": ""
790
790
  },
791
791
  {
792
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Time.sol",
792
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Time.sol",
793
793
  "file": "../../protocol/lib/Time.sol",
794
794
  "id": 16522,
795
795
  "nodeType": "ImportDirective",
@@ -805,7 +805,7 @@
805
805
  "unitAlias": ""
806
806
  },
807
807
  {
808
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol",
808
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Types.sol",
809
809
  "file": "../../protocol/lib/Types.sol",
810
810
  "id": 16524,
811
811
  "nodeType": "ImportDirective",
@@ -821,7 +821,7 @@
821
821
  "unitAlias": ""
822
822
  },
823
823
  {
824
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol",
824
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/helpers/OnlyDolomiteMargin.sol",
825
825
  "file": "../helpers/OnlyDolomiteMargin.sol",
826
826
  "id": 16526,
827
827
  "nodeType": "ImportDirective",
@@ -837,7 +837,7 @@
837
837
  "unitAlias": ""
838
838
  },
839
839
  {
840
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IExpiry.sol",
840
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/IExpiry.sol",
841
841
  "file": "../interfaces/IExpiry.sol",
842
842
  "id": 16528,
843
843
  "nodeType": "ImportDirective",
@@ -15386,7 +15386,7 @@
15386
15386
  "src": "603:16342:35"
15387
15387
  },
15388
15388
  "legacyAST": {
15389
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/traders/Expiry.sol",
15389
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/traders/Expiry.sol",
15390
15390
  "exportedSymbols": {
15391
15391
  "Expiry": [
15392
15392
  17599
@@ -15464,7 +15464,7 @@
15464
15464
  "unitAlias": ""
15465
15465
  },
15466
15466
  {
15467
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IAutoTrader.sol",
15467
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IAutoTrader.sol",
15468
15468
  "file": "../../protocol/interfaces/IAutoTrader.sol",
15469
15469
  "id": 16504,
15470
15470
  "nodeType": "ImportDirective",
@@ -15480,7 +15480,7 @@
15480
15480
  "unitAlias": ""
15481
15481
  },
15482
15482
  {
15483
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/ICallee.sol",
15483
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/ICallee.sol",
15484
15484
  "file": "../../protocol/interfaces/ICallee.sol",
15485
15485
  "id": 16506,
15486
15486
  "nodeType": "ImportDirective",
@@ -15496,7 +15496,7 @@
15496
15496
  "unitAlias": ""
15497
15497
  },
15498
15498
  {
15499
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol",
15499
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IDolomiteMargin.sol",
15500
15500
  "file": "../../protocol/interfaces/IDolomiteMargin.sol",
15501
15501
  "id": 16508,
15502
15502
  "nodeType": "ImportDirective",
@@ -15512,7 +15512,7 @@
15512
15512
  "unitAlias": ""
15513
15513
  },
15514
15514
  {
15515
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/ILiquidationCallback.sol",
15515
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/ILiquidationCallback.sol",
15516
15516
  "file": "../../protocol/interfaces/ILiquidationCallback.sol",
15517
15517
  "id": 16510,
15518
15518
  "nodeType": "ImportDirective",
@@ -15528,7 +15528,7 @@
15528
15528
  "unitAlias": ""
15529
15529
  },
15530
15530
  {
15531
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol",
15531
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Account.sol",
15532
15532
  "file": "../../protocol/lib/Account.sol",
15533
15533
  "id": 16512,
15534
15534
  "nodeType": "ImportDirective",
@@ -15544,7 +15544,7 @@
15544
15544
  "unitAlias": ""
15545
15545
  },
15546
15546
  {
15547
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol",
15547
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Decimal.sol",
15548
15548
  "file": "../../protocol/lib/Decimal.sol",
15549
15549
  "id": 16514,
15550
15550
  "nodeType": "ImportDirective",
@@ -15560,7 +15560,7 @@
15560
15560
  "unitAlias": ""
15561
15561
  },
15562
15562
  {
15563
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Math.sol",
15563
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Math.sol",
15564
15564
  "file": "../../protocol/lib/Math.sol",
15565
15565
  "id": 16516,
15566
15566
  "nodeType": "ImportDirective",
@@ -15576,7 +15576,7 @@
15576
15576
  "unitAlias": ""
15577
15577
  },
15578
15578
  {
15579
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol",
15579
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Monetary.sol",
15580
15580
  "file": "../../protocol/lib/Monetary.sol",
15581
15581
  "id": 16518,
15582
15582
  "nodeType": "ImportDirective",
@@ -15592,7 +15592,7 @@
15592
15592
  "unitAlias": ""
15593
15593
  },
15594
15594
  {
15595
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
15595
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Require.sol",
15596
15596
  "file": "../../protocol/lib/Require.sol",
15597
15597
  "id": 16520,
15598
15598
  "nodeType": "ImportDirective",
@@ -15608,7 +15608,7 @@
15608
15608
  "unitAlias": ""
15609
15609
  },
15610
15610
  {
15611
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Time.sol",
15611
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Time.sol",
15612
15612
  "file": "../../protocol/lib/Time.sol",
15613
15613
  "id": 16522,
15614
15614
  "nodeType": "ImportDirective",
@@ -15624,7 +15624,7 @@
15624
15624
  "unitAlias": ""
15625
15625
  },
15626
15626
  {
15627
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol",
15627
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Types.sol",
15628
15628
  "file": "../../protocol/lib/Types.sol",
15629
15629
  "id": 16524,
15630
15630
  "nodeType": "ImportDirective",
@@ -15640,7 +15640,7 @@
15640
15640
  "unitAlias": ""
15641
15641
  },
15642
15642
  {
15643
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol",
15643
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/helpers/OnlyDolomiteMargin.sol",
15644
15644
  "file": "../helpers/OnlyDolomiteMargin.sol",
15645
15645
  "id": 16526,
15646
15646
  "nodeType": "ImportDirective",
@@ -15656,7 +15656,7 @@
15656
15656
  "unitAlias": ""
15657
15657
  },
15658
15658
  {
15659
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IExpiry.sol",
15659
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/IExpiry.sol",
15660
15660
  "file": "../interfaces/IExpiry.sol",
15661
15661
  "id": 16528,
15662
15662
  "nodeType": "ImportDirective",
@@ -30346,150 +30346,11 @@
30346
30346
  },
30347
30347
  "links": {},
30348
30348
  "address": "0xB9bdBAEc07751F6d54d19A6B9995708873F3DE18",
30349
- "transactionHash": "0x3f81f56f27e8ca67b3f20263784ba9a35a693be80588dd63bedad746f8bc082b"
30350
- },
30351
- "80001": {
30352
- "events": {
30353
- "0x00cee2201664da23900ada76f5e96bcae576e5d7253b36f10dc1b379597d521b": {
30354
- "anonymous": false,
30355
- "inputs": [
30356
- {
30357
- "indexed": false,
30358
- "internalType": "address",
30359
- "name": "owner",
30360
- "type": "address"
30361
- },
30362
- {
30363
- "indexed": false,
30364
- "internalType": "uint256",
30365
- "name": "number",
30366
- "type": "uint256"
30367
- },
30368
- {
30369
- "indexed": false,
30370
- "internalType": "uint256",
30371
- "name": "marketId",
30372
- "type": "uint256"
30373
- },
30374
- {
30375
- "indexed": false,
30376
- "internalType": "uint32",
30377
- "name": "time",
30378
- "type": "uint32"
30379
- }
30380
- ],
30381
- "name": "ExpirySet",
30382
- "type": "event"
30383
- },
30384
- "0xd08f204a092297d87c6a408c8d66cb1b189734e8284e655f896717b45a93a536": {
30385
- "anonymous": false,
30386
- "inputs": [
30387
- {
30388
- "indexed": false,
30389
- "internalType": "uint256",
30390
- "name": "expiryRampTime",
30391
- "type": "uint256"
30392
- }
30393
- ],
30394
- "name": "LogExpiryRampTimeSet",
30395
- "type": "event"
30396
- },
30397
- "0x969c8b99a23d857754fd7c4d782add205dc6127f8a50f606803b6076a50a2345": {
30398
- "anonymous": false,
30399
- "inputs": [
30400
- {
30401
- "indexed": true,
30402
- "internalType": "address",
30403
- "name": "liquidAccountOwner",
30404
- "type": "address"
30405
- },
30406
- {
30407
- "indexed": false,
30408
- "internalType": "uint256",
30409
- "name": "liquidAccountNumber",
30410
- "type": "uint256"
30411
- },
30412
- {
30413
- "indexed": false,
30414
- "internalType": "string",
30415
- "name": "reason",
30416
- "type": "string"
30417
- }
30418
- ],
30419
- "name": "LogLiquidationCallbackFailure",
30420
- "type": "event"
30421
- },
30422
- "0x5418b0c788a0e055245b87cdebed5cb5af6e38862954e736cf2c11165cfac3f5": {
30423
- "anonymous": false,
30424
- "inputs": [
30425
- {
30426
- "indexed": true,
30427
- "internalType": "address",
30428
- "name": "liquidAccountOwner",
30429
- "type": "address"
30430
- },
30431
- {
30432
- "indexed": false,
30433
- "internalType": "uint256",
30434
- "name": "liquidAccountNumber",
30435
- "type": "uint256"
30436
- }
30437
- ],
30438
- "name": "LogLiquidationCallbackSuccess",
30439
- "type": "event"
30440
- },
30441
- "0x6d39d55c693043fe0327fddb80edde3a40fb0419a6299d29592cc2f11e728b9c": {
30442
- "anonymous": false,
30443
- "inputs": [
30444
- {
30445
- "indexed": false,
30446
- "internalType": "address",
30447
- "name": "approver",
30448
- "type": "address"
30449
- },
30450
- {
30451
- "indexed": false,
30452
- "internalType": "address",
30453
- "name": "sender",
30454
- "type": "address"
30455
- },
30456
- {
30457
- "indexed": false,
30458
- "internalType": "uint32",
30459
- "name": "minTimeDelta",
30460
- "type": "uint32"
30461
- }
30462
- ],
30463
- "name": "LogSenderApproved",
30464
- "type": "event"
30465
- },
30466
- "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
30467
- "anonymous": false,
30468
- "inputs": [
30469
- {
30470
- "indexed": true,
30471
- "internalType": "address",
30472
- "name": "previousOwner",
30473
- "type": "address"
30474
- },
30475
- {
30476
- "indexed": true,
30477
- "internalType": "address",
30478
- "name": "newOwner",
30479
- "type": "address"
30480
- }
30481
- ],
30482
- "name": "OwnershipTransferred",
30483
- "type": "event"
30484
- }
30485
- },
30486
- "links": {},
30487
- "address": "0xb1DD89690E86754d58204fEE6551b45ae1Dd6D30",
30488
- "transactionHash": "0x5ce75695d7623c20a76c27a4c6312999faa5051bd0ea4a4c829ca36fd315c5e6"
30349
+ "transactionHash": "0x3d05d4c863e9fefa773d1d48790f9175607fce5452e9d9ae7259316794550991"
30489
30350
  }
30490
30351
  },
30491
30352
  "schemaVersion": "3.0.23",
30492
- "updatedAt": "2022-01-28T09:46:02.699Z",
30353
+ "updatedAt": "2022-01-29T00:31:29.691Z",
30493
30354
  "devdoc": {
30494
30355
  "author": "dYdX * Expiry contract that also allows approved senders to set expiry to be 28 days in the future.",
30495
30356
  "methods": {