@dolomite-exchange/dolomite-margin 0.2.6 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/contracts/Account.json +11 -11
- package/build/contracts/Actions.json +11 -11
- package/build/contracts/Address.json +1 -1
- package/build/contracts/Admin.json +23 -23
- package/build/contracts/AdminImpl.json +35 -307
- package/build/contracts/AdvancedMath.json +7 -7
- package/build/contracts/AmmRebalancerProxy.json +577 -621
- package/build/contracts/AmmRebalancerProxyV1.json +78 -32
- package/build/contracts/Babylonian.json +1 -1
- package/build/contracts/Bits.json +9 -9
- package/build/contracts/Cache.json +13 -13
- package/build/contracts/ChainlinkPriceOracleV1.json +16 -16
- package/build/contracts/Context.json +1 -1
- package/build/contracts/CustomTestToken.json +9 -9
- package/build/contracts/Decimal.json +9 -9
- package/build/contracts/DelayedMultiSig.json +9 -9
- package/build/contracts/DolomiteAmmERC20.json +11 -11
- package/build/contracts/DolomiteAmmFactory.json +14 -52
- package/build/contracts/DolomiteAmmLibrary.json +24 -24
- package/build/contracts/DolomiteAmmPair.json +27 -27
- package/build/contracts/DolomiteAmmRouterProxy.json +30 -363
- package/build/contracts/DolomiteMargin.json +21 -67
- package/build/contracts/DoubleExponentInterestSetter.json +15 -21
- package/build/contracts/EnumerableSet.json +7 -7
- package/build/contracts/ErroringOmiseToken.json +9 -9
- package/build/contracts/ErroringToken.json +10 -10
- package/build/contracts/Events.json +17 -17
- package/build/contracts/ExcessivelySafeCall.json +35 -35
- package/build/contracts/Exchange.json +15 -15
- package/build/contracts/Expiry.json +36 -36
- package/build/contracts/Getters.json +33 -33
- package/build/contracts/IAutoTrader.json +9 -9
- package/build/contracts/ICallee.json +7 -7
- package/build/contracts/IChainlinkAggregator.json +5 -5
- package/build/contracts/IDolomiteAmmERC20.json +5 -5
- package/build/contracts/IDolomiteAmmFactory.json +9 -9
- package/build/contracts/IDolomiteAmmPair.json +9 -9
- package/build/contracts/IDolomiteMargin.json +23 -23
- package/build/contracts/IERC20.json +1 -1
- package/build/contracts/IERC20Detailed.json +5 -5
- package/build/contracts/IExchangeWrapper.json +5 -5
- package/build/contracts/IExpiry.json +9 -9
- package/build/contracts/IInterestSetter.json +7 -7
- package/build/contracts/ILiquidationCallback.json +7 -7
- package/build/contracts/IMakerOracle.json +5 -5
- package/build/contracts/IOasisDex.json +5 -5
- package/build/contracts/IPriceOracle.json +7 -7
- package/build/contracts/IRecyclable.json +9 -9
- package/build/contracts/ITransferProxy.json +5 -5
- package/build/contracts/IUniswapV2Callee.json +5 -5
- package/build/contracts/IUniswapV2Factory.json +5 -5
- package/build/contracts/IUniswapV2Pair.json +5 -5
- package/build/contracts/IUniswapV2Router.json +5 -5
- package/build/contracts/IWETH.json +5 -5
- package/build/contracts/Interest.json +15 -15
- package/build/contracts/LiquidateOrVaporizeImpl.json +32 -83
- package/build/contracts/LiquidatorProxyHelper.json +23 -23
- package/build/contracts/LiquidatorProxyV1.json +30 -36
- package/build/contracts/LiquidatorProxyV1WithAmm.json +49 -105
- package/build/contracts/Math.json +1 -1
- package/build/contracts/Migrations.json +8 -14
- package/build/contracts/Monetary.json +7 -7
- package/build/contracts/MultiCall.json +8 -14
- package/build/contracts/MultiSig.json +7 -7
- package/build/contracts/OmiseToken.json +8 -8
- package/build/contracts/OnlyDolomiteMargin.json +11 -11
- package/build/contracts/Operation.json +15 -15
- package/build/contracts/OperationImpl.json +39 -47
- package/build/contracts/Ownable.json +1 -1
- package/build/contracts/PartiallyDelayedMultiSig.json +9 -9
- package/build/contracts/PayableProxy.json +17 -23
- package/build/contracts/Permission.json +11 -11
- package/build/contracts/PolynomialInterestSetter.json +13 -13
- package/build/contracts/RecyclableTokenProxy.json +25 -25
- package/build/contracts/ReentrancyGuard.json +1 -1
- package/build/contracts/Require.json +7 -7
- package/build/contracts/SafeERC20.json +1 -1
- package/build/contracts/SafeETH.json +7 -7
- package/build/contracts/SafeLiquidationCallback.json +17 -17
- package/build/contracts/SafeMath.json +1 -1
- package/build/contracts/SignedOperationProxy.json +21 -104
- package/build/contracts/SimpleFeeOwner.json +18 -63
- package/build/contracts/State.json +9 -9
- package/build/contracts/Storage.json +37 -37
- package/build/contracts/TestAmmRebalancerProxy.json +32 -58
- package/build/contracts/TestAutoTrader.json +22 -22
- package/build/contracts/TestBtcUsdChainlinkAggregator.json +10 -10
- package/build/contracts/TestCallee.json +19 -19
- package/build/contracts/TestChainlinkPriceOracleV1.json +10 -94
- package/build/contracts/TestCounter.json +7 -7
- package/build/contracts/TestDaiUsdChainlinkAggregator.json +11 -11
- package/build/contracts/TestDolomiteMargin.json +22 -22
- package/build/contracts/TestDoubleExponentInterestSetter.json +10 -10
- package/build/contracts/TestEthUsdChainlinkAggregator.json +11 -11
- package/build/contracts/TestExchangeWrapper.json +28 -28
- package/build/contracts/TestInterestSetter.json +13 -13
- package/build/contracts/TestLib.json +22 -22
- package/build/contracts/TestLinkUsdChainlinkAggregator.json +11 -11
- package/build/contracts/TestLiquidateCallback.json +719 -719
- package/build/contracts/TestLiquidationCallback.json +13 -13
- package/build/contracts/TestLrcEthChainlinkAggregator.json +11 -11
- package/build/contracts/TestMakerOracle.json +10 -10
- package/build/contracts/TestMaticUsdChainlinkAggregator.json +10 -10
- package/build/contracts/TestOasisDex.json +12 -12
- package/build/contracts/TestOperationImpl.json +14 -14
- package/build/contracts/TestPolynomialInterestSetter.json +10 -10
- package/build/contracts/TestPriceAggregator.json +9 -9
- package/build/contracts/TestPriceOracle.json +13 -13
- package/build/contracts/TestRecyclableToken.json +9 -9
- package/build/contracts/TestSimpleCallee.json +15 -15
- package/build/contracts/TestToken.json +9 -9
- package/build/contracts/TestTrader.json +17 -17
- package/build/contracts/TestUniswapAmmRebalancerProxy.json +16 -16
- package/build/contracts/TestUsdcUsdChainlinkAggregator.json +11 -11
- package/build/contracts/TestWETH.json +9 -9
- package/build/contracts/Time.json +9 -9
- package/build/contracts/Token.json +9 -9
- package/build/contracts/TokenA.json +10 -10
- package/build/contracts/TokenB.json +10 -10
- package/build/contracts/TokenC.json +10 -10
- package/build/contracts/TokenD.json +10 -10
- package/build/contracts/TokenE.json +10 -10
- package/build/contracts/TokenF.json +10 -10
- package/build/contracts/TransferProxy.json +22 -28
- package/build/contracts/TypedSignature.json +9 -9
- package/build/contracts/Types.json +9 -9
- package/build/contracts/UQ112x112.json +7 -7
- package/build/contracts/UniswapV2ERC20.json +7 -7
- package/build/contracts/UniswapV2Factory.json +12 -12
- package/build/contracts/UniswapV2Library.json +20 -20
- package/build/contracts/UniswapV2Pair.json +17 -17
- package/build/contracts/UniswapV2Router02.json +16 -16
- package/build/contracts/WETH9.json +1 -1
- package/contracts/external/amm/DolomiteAmmERC20.sol +135 -0
- package/contracts/external/amm/DolomiteAmmFactory.sol +122 -0
- package/contracts/external/amm/DolomiteAmmPair.sol +573 -0
- package/contracts/external/amm/SimpleFeeOwner.sol +107 -0
- package/contracts/external/helpers/LiquidatorProxyHelper.sol +252 -0
- package/contracts/external/helpers/OnlyDolomiteMargin.sol +63 -0
- package/contracts/external/interestsetters/DoubleExponentInterestSetter.sol +212 -0
- package/contracts/external/interestsetters/PolynomialInterestSetter.sol +205 -0
- package/contracts/external/interfaces/IChainlinkAggregator.sol +33 -0
- package/contracts/external/interfaces/IDolomiteAmmERC20.sol +52 -0
- package/contracts/external/interfaces/IDolomiteAmmFactory.sol +42 -0
- package/contracts/external/interfaces/IDolomiteAmmPair.sol +116 -0
- package/contracts/external/interfaces/IExpiry.sol +70 -0
- package/contracts/external/interfaces/IMakerOracle.sol +52 -0
- package/contracts/external/interfaces/IOasisDex.sol +326 -0
- package/contracts/external/interfaces/ITransferProxy.sol +53 -0
- package/contracts/external/interfaces/IUniswapV2Router.sol +134 -0
- package/contracts/external/lib/AdvancedMath.sol +23 -0
- package/contracts/external/lib/DolomiteAmmLibrary.sol +323 -0
- package/contracts/external/lib/TypedSignature.sol +120 -0
- package/contracts/external/lib/UQ112x112.sol +22 -0
- package/contracts/external/multisig/DelayedMultiSig.sol +206 -0
- package/contracts/external/multisig/MultiSig.sol +571 -0
- package/contracts/external/multisig/PartiallyDelayedMultiSig.sol +174 -0
- package/contracts/external/oracles/ChainlinkPriceOracleV1.sol +197 -0
- package/contracts/external/oracles/TestChainlinkPriceOracleV1.sol +98 -0
- package/contracts/external/proxies/AmmRebalancerProxyV1.sol +465 -0
- package/contracts/external/proxies/DolomiteAmmRouterProxy.sol +877 -0
- package/contracts/external/proxies/LiquidatorProxyV1.sol +507 -0
- package/contracts/external/proxies/LiquidatorProxyV1WithAmm.sol +574 -0
- package/contracts/external/proxies/PayableProxy.sol +146 -0
- package/contracts/external/proxies/RecyclableTokenProxy.sol +463 -0
- package/contracts/external/proxies/SignedOperationProxy.sol +553 -0
- package/contracts/external/proxies/TransferProxy.sol +207 -0
- package/contracts/external/traders/Expiry.sol +532 -0
- package/contracts/external/uniswap-v2/UniswapV2ERC20.sol +118 -0
- package/contracts/external/uniswap-v2/UniswapV2Factory.sol +67 -0
- package/contracts/external/uniswap-v2/UniswapV2Pair.sol +283 -0
- package/contracts/external/uniswap-v2/UniswapV2Router02.sol +566 -0
- package/contracts/external/uniswap-v2/interfaces/IUniswapV2Callee.sol +13 -0
- package/contracts/external/uniswap-v2/interfaces/IUniswapV2Factory.sol +18 -0
- package/contracts/external/uniswap-v2/interfaces/IUniswapV2Pair.sol +67 -0
- package/contracts/external/uniswap-v2/interfaces/IWETH.sol +7 -0
- package/contracts/external/uniswap-v2/libraries/SafeETH.sol +29 -0
- package/contracts/external/uniswap-v2/libraries/UniswapV2Library.sol +117 -0
- package/contracts/external/utils/MultiCall.sol +95 -0
- package/contracts/protocol/impl/artifacts/OperationImpl.json +80 -0
- package/contracts/protocol/impl/artifacts/OperationImpl_metadata.json +193 -0
- package/dist/build/published_contracts/AdminImpl.json +2 -2
- package/dist/build/published_contracts/AmmRebalancerProxyV1.json +5 -0
- package/dist/build/published_contracts/ChainlinkPriceOracleV1.json +1 -1
- package/dist/build/published_contracts/DolomiteAmmFactory.json +1 -1
- package/dist/build/published_contracts/DolomiteAmmRouterProxy.json +1 -1
- package/dist/build/published_contracts/DoubleExponentInterestSetter.json +2 -2
- package/dist/build/published_contracts/Expiry.json +1 -1
- package/dist/build/published_contracts/LiquidatorProxyV1.json +1 -1
- package/dist/build/published_contracts/LiquidatorProxyV1WithAmm.json +1 -1
- package/dist/build/published_contracts/MultiCall.json +1 -1
- package/dist/build/published_contracts/PayableProxy.json +2 -2
- package/dist/build/published_contracts/SignedOperationProxy.json +2 -2
- package/dist/build/published_contracts/SimpleFeeOwner.json +1 -1
- package/dist/build/published_contracts/TestUniswapAmmRebalancerProxy.json +140 -0
- package/dist/build/published_contracts/TransferProxy.json +1 -1
- package/dist/src/lib/Contracts.d.ts +3 -1
- package/dist/src/lib/Contracts.js +7 -3
- package/dist/src/lib/Contracts.js.map +1 -1
- package/package.json +2 -1
|
@@ -159,15 +159,15 @@
|
|
|
159
159
|
"type": "function"
|
|
160
160
|
}
|
|
161
161
|
],
|
|
162
|
-
"metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dolomiteMargin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dolomiteAmmRouterProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expiryProxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"solidAccountOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"solidAccountNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"heldMarket\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"heldDeltaWeiWithReward\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Types.Wei\",\"name\":\"profitHeldWei\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"owedMarket\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"owedDeltaWei\",\"type\":\"uint256\"}],\"name\":\"LogLiquidateWithAmm\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"solidAccount\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"liquidAccount\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"owedMarket\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"heldMarket\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minOwedOutputAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"revertOnFailToSellCollateral\",\"type\":\"bool\"}],\"name\":\"liquidate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Dolomite * Contract for liquidating other accounts in DolomiteMargin and atomically selling off collateral via Dolomite AMM markets.\",\"methods\":{\"liquidate((address,uint256),(address,uint256),uint256,uint256,address[],uint256,uint256,bool)\":{\"params\":{\"expiry\":\"The time at which the position expires, if this liquidation is for closing an expired position. Else, 0.\",\"heldMarket\":\"The held market whose collateral will be recovered to take on the debt of `owedMarket`\",\"liquidAccount\":\"The account that will be liquidated\",\"minOwedOutputAmount\":\"The minimum amount that should be outputted by the trade from heldWei to owedWei. Used to prevent sandwiching and mem-pool other attacks. Only used if `revertOnFailToSellCollateral` is set to `false` and the collateral cannot cover the `liquidAccount`'s debt.\",\"owedMarket\":\"The owed market whose borrowed value will be added to `toLiquidate`\",\"revertOnFailToSellCollateral\":\"True to revert the transaction completely if all collateral from the liquidation cannot repay the owed debt. False to swallow the error and sell whatever is possible. If set to false, the liquidator must have sufficient assets to be prevent becoming liquidated or under-collateralized.\",\"solidAccount\":\"The account that will do the liquidating\",\"tokenPath\":\"The path through which the trade will be routed to recover the collateral\"}}},\"title\":\"LiquidatorProxyV1WithAmm\"},\"userdoc\":{\"methods\":{\"liquidate((address,uint256),(address,uint256),uint256,uint256,address[],uint256,uint256,bool)\":{\"notice\":\"Liquidate liquidAccount using solidAccount. This contract and the msg.sender to this contract must both be operators for the solidAccount.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/proxies/LiquidatorProxyV1WithAmm.sol\":\"LiquidatorProxyV1WithAmm\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/helpers/LiquidatorProxyHelper.sol\":{\"keccak256\":\"0x87d4f290fa884c943dafbbc3457449f5d6de153e1ff5891762ae4313949fc371\",\"urls\":[\"bzz-raw://a996eaaf35b7ba5e4d5ff543e1af89fdb5a0e095fe593f3cfff6232c48fabb15\",\"dweb:/ipfs/QmZaZoJWVYFMtVd5rjXP7wXYJxPjfDGftMbriG2Nzwdfoy\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDolomiteAmmFactory.sol\":{\"keccak256\":\"0xf5fd97ee3591ff30a3576d6d58847b5f6e156639578bed3827313a2c70823b78\",\"urls\":[\"bzz-raw://f9da41065f9b3b559bfc588cea01480f1c64ee7b1f1a86e54868f464fdfe2160\",\"dweb:/ipfs/QmWeBi2zSdPCENVV4fvCQ49HgnwLGxd3WS9sGMC4vR5NrB\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDolomiteAmmPair.sol\":{\"keccak256\":\"0xe2272c233467a78460e681419f0acdc765de0ad5357d3b768665f289941ccd47\",\"urls\":[\"bzz-raw://114f1c797f4e7e803b0764ae7107a2279c3da806450287c9e5600211faeeab57\",\"dweb:/ipfs/QmUoLx1rGgCdX5ScsUkp4NsSZLyVWdKsVKeXuPCtcrAvLn\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IExpiry.sol\":{\"keccak256\":\"0xee5f04a47950c59594d8eeaefe44bfd9411331e481d10bb2e27dd5fa1c6a8921\",\"urls\":[\"bzz-raw://ea04d35f178214100d5602acddc65fe655df17f8ad75354193ef2ceaefbc7baa\",\"dweb:/ipfs/QmX384XSTcm7H8thzMEvkonVJBaPpTVgQHYZRug1rWBCNb\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/DolomiteAmmLibrary.sol\":{\"keccak256\":\"0xdaad95bfa237ec524e85dffa48cea183272a99cec9368b1e66b42825bb738004\",\"urls\":[\"bzz-raw://cbce9e6b3941fac7894d6bcad4be81b12ec972866a380d9c1199898b17303163\",\"dweb:/ipfs/QmfREVS3yoW9eMCEbb4q6juoAqVE6c8yVZKFT1tMAQEASj\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/TypedSignature.sol\":{\"keccak256\":\"0x4b4eb5fd2869d6c410948f78163773442c11bc82e393307e41359bbdb21577bf\",\"urls\":[\"bzz-raw://9c9c3abae44173086bc08f5479fbc67151d5905f60e1032ec6f9e40f841f3365\",\"dweb:/ipfs/QmbsQRX3gmcpimjFEW5ULJVavHQtViyg7NSQ2Q8Qcu6F6V\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/proxies/DolomiteAmmRouterProxy.sol\":{\"keccak256\":\"0x190991e1ecbdc7480da52841c4a475de493c1af3b5acd69934a87149054d4f4d\",\"urls\":[\"bzz-raw://16335a0f6dc2aebf0fdbab563bc95432dd35897ab6bf1aeb1c6c9fe7b300d1f7\",\"dweb:/ipfs/QmUUvrnVNvXwG2GRR3i9tibCLi2NDL2m7DD3jFedeYGCm7\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/proxies/LiquidatorProxyV1WithAmm.sol\":{\"keccak256\":\"0xa702525e65a5e100599a0401a74da049ba7bc4c14dd3e212db11c53c0455205d\",\"urls\":[\"bzz-raw://2387ba4c41912d20a38946d25bc9d3d6067b5fc0689541e6e2aef8afe159cfb9\",\"dweb:/ipfs/QmWkDRgrC2rP2Huc1hx1B2h7KjhRLin4L6MWpNNFbBfENA\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/uniswap-v2/interfaces/IUniswapV2Pair.sol\":{\"keccak256\":\"0x022ea15b611c155e236053a484d21223ae6f74da3828379cd8a34a16649b5945\",\"urls\":[\"bzz-raw://41979b601b10b34937f2f5939ab5c5240759c3434e405bf84a69ef94a1612454\",\"dweb:/ipfs/QmbK4y63kjtpbxFgResFo9K2bEhNxcxoTqddpJXeHxwqcT\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x1e73364879c267fdd2bfd871e62ee58ee3d65fbef3b71e3cc104fbff499eca6c\",\"urls\":[\"bzz-raw://e3b1327980a5949afd52cff4713f47ee4fdee9a8b376ceaa3402f5c9696b8c1b\",\"dweb:/ipfs/QmbhQzVEdaraPJizT5DTtk6CDzH3guHNipHW5T23uTtFkX\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/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/Events.sol\":{\"keccak256\":\"0x0c71c063b3a1b4e653d94c05f6fc49de43ccc28838e406faccb1c93f424995a8\",\"urls\":[\"bzz-raw://73268db2286565ecc242da93930780e8e4794015c8c0e58d336981ffdc6cfd3a\",\"dweb:/ipfs/QmRYzhuRtKXnTscERvYS9XzjqdQFBoJZoHwRAekHo6w6Zy\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x73e75454568c5dfc3bdcf7dbf2ddce6ab8d3d317618bc1f1957f7667e15d3799\",\"urls\":[\"bzz-raw://7b1c8a9a79c8ffdbb0fa633f713ae3dfeac93b31d2b1639614ac32d473fb8250\",\"dweb:/ipfs/QmfARP93W2mgeVwD9Lkd3yVmbCLF2Mos7o8HJ1x6WYQmxZ\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Math.sol\":{\"keccak256\":\"0x0c0c913b6ccdb69063f9ec84879fcad20a1ee6f44402c9f5ec2b4f5b9f2fa16b\",\"urls\":[\"bzz-raw://89b32eefb57e5e63ad8c6e079ae7bf2d2c8622776cd45af0cf304e1cafd6e078\",\"dweb:/ipfs/Qmcj7yRnYuTgKC3ZqZqe8rynHGYVDS3UrFExcVGcqeaDHY\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0xe641662503ea29ca959e84674188c3e9deaaf64c5623fb9560a4301c521ca1d3\",\"urls\":[\"bzz-raw://b10a04c7d014b99eb792c8c774e203c846d070b30cf0b715325fc07838ed6a6d\",\"dweb:/ipfs/QmUqZWnbchfEY9jM647yQamHe4GzspfUeRQF9k2nn1Hixd\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0xf930fbde3ab43ec8f079dbad062453b502542f53b7eec670c8e86c7a2e47dd9a\",\"urls\":[\"bzz-raw://e1c402fc55471e8372be478e99f91c28373f096e31f0ef1d5072dfdb81541c29\",\"dweb:/ipfs/QmTc8WSfFCbxNQqNpq1vptUVFxteKQ8HWEhyXREyPZ2neu\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x233d6ebf965711bf980f4bb2e672fb1a11b4b879fd41c884b3c2b704417d0d0c\",\"urls\":[\"bzz-raw://6478ff81706d531f9438b96274a7b904abbbd9c631540c68c6a89c3accf27abf\",\"dweb:/ipfs/QmWe9vkz3qwVjrcbmcTL8wgkjLPsrEqxcqPJL9ujM8PPbp\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0xd7bcae9e3c570544fc946a00cc7695106a64c20bc130d0183612c0410a531d19\",\"urls\":[\"bzz-raw://0ff5ffd6abb9ed223a64128c131afd962bec07fb9867cb62593906b339c76920\",\"dweb:/ipfs/QmbTrJL4bekvBqqaw6wXnBhYzS9uAqULSWF2VzW4cdfsM5\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xab134538648a2e223a7fe61db03c14f687657a5d37147f93c9088f11735aa311\",\"urls\":[\"bzz-raw://79dc7d2b30576d2349b99267642ac8d5fb7939c920b8d8045379d3614238bdc3\",\"dweb:/ipfs/QmaQJYg1nirHoWSC6G38Cjsk9pZBzEaNrGXKqTsvAzbyES\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}",
|
|
163
|
-
"bytecode": "0x60806040523480156200001157600080fd5b506040516200410c3803806200410c83398101604081905262000034916200009e565b600080546001600160a01b0394851661010002610100600160a81b031960ff199092166001908117929092161790915580549284166001600160a01b0319938416179055600280549190931691161790556200011e565b8051620000988162000104565b92915050565b600080600060608486031215620000b457600080fd5b6000620000c286866200008b565b9350506020620000d5868287016200008b565b9250506040620000e8868287016200008b565b9150509250925092565b60006001600160a01b03821662000098565b6200010f81620000f2565b81146200011b57600080fd5b50565b613fde806200012e6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80634e2d2fbf14610030575b600080fd5b61004361003e3660046134cf565b610045565b005b60005460ff1661008a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190613c8a565b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610102868614157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f6f7765644d61726b657420657175616c732068656c644d61726b6574000000008989610a1d565b6000546040517f47d1b53c000000000000000000000000000000000000000000000000000000008152610203916101ba9161010090910473ffffffffffffffffffffffffffffffffffffffff16906347d1b53c90610166908c908c90600401613ca8565b604080518083038186803b15801561017d57600080fd5b505afa158015610191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101b59190810190613599565b610b28565b157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f6f776564206d61726b65742063616e6e6f7420626520706f736974697665000089610b57565b6000546040517f47d1b53c0000000000000000000000000000000000000000000000000000000081526102af916102679161010090910473ffffffffffffffffffffffffffffffffffffffff16906347d1b53c90610166908c908b90600401613ca8565b7f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f68656c64206d61726b65742063616e6e6f74206265206e65676174697665000088610b57565b610303838463ffffffff16147f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f657870697279206f766572666c6f77000000000000000000000000000000000086610b57565b61030b612cac565b600054610100900473ffffffffffffffffffffffffffffffffffffffff16808252602082018a905260408083018a9052517f98d4611b0000000000000000000000000000000000000000000000000000000081526398d4611b90610373908b90600401613c9a565b60006040518083038186803b15801561038b57600080fd5b505afa15801561039f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103c79190810190613422565b608082015280516040517f98d4611b000000000000000000000000000000000000000000000000000000008152610483919073ffffffffffffffffffffffffffffffffffffffff8216906398d4611b90610425908e90600401613c9a565b60006040518083038186803b15801561043d57600080fd5b505afa158015610451573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104799190810190613422565b8360800151610bf5565b6060820152836104945760006104ae565b60025473ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff1660a082015263ffffffff841660c08201526104dd612d27565b6104e882888a610f32565b90506104f682888a896112e0565b6104ff8161198e565b805161054e9015157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f6e6f7468696e6720746f206c6971756964617465000000000000000000000000611a41565b60208101516040820151511561057b5760408201516020015161057890829063ffffffff611a8b16565b90505b606080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fd15c8918660200151600001518760200151602001517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88600001518e6040518663ffffffff1660e01b8152600401610615959493929190613bd2565b60006040518083038186803b15801561062d57600080fd5b505afa158015610641573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066991908101906133b9565b915091508060008151811061067a57fe5b6020026020010151604001516060015184602001511061075e5760006106c9826000815181106106a657fe5b602002602001015160400151606001518660200151611ad390919063ffffffff16565b905060008c905086602001516000015173ffffffffffffffffffffffffffffffffffffffff167fd830e4105186a902ac3d9e3080ccf4c3afa7191753281b0abdb147a603b6d4dd8860200151602001518e8960200151604051806040016040528060011515815260200188815250868c6000015160405161074f96959493929190613cec565b60405180910390a2505061095d565b6107c886157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f746f74616c536f6c696448656c6457656920697320746f6f20736d616c6c000086856000815181106107b357fe5b60200260200101516040015160600151610a1d565b60006107fd8560200151836000815181106107df57fe5b60200260200101516040015160600151611ad390919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a6e58f5876020015160000151886020015160200151878c8f6040518663ffffffff1660e01b8152600401610872959493929190613bd2565b60006040518083038186803b15801561088a57600080fd5b505afa15801561089e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108c691908101906133b9565b809350819450505060008c905086602001516000015173ffffffffffffffffffffffffffffffffffffffff167fd830e4105186a902ac3d9e3080ccf4c3afa7191753281b0abdb147a603b6d4dd8860200151602001518e8960200151604051806040016040528060001515815260200188815250868c6000015160405161095296959493929190613cec565b60405180910390a250505b6109678583611b15565b855190925073ffffffffffffffffffffffffffffffffffffffff1663a67a6a458361099488888387611c40565b6040518363ffffffff1660e01b81526004016109b1929190613c24565b600060405180830381600087803b1580156109cb57600080fd5b505af11580156109df573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055505050505050505050505050505050565b84610b2157610a2b84611e61565b7f3a20000000000000000000000000000000000000000000000000000000000000610a5585611e61565b7f203c000000000000000000000000000000000000000000000000000000000000610a7f86611f1b565b7f2c20000000000000000000000000000000000000000000000000000000000000610aa987611f1b565b604051610ae197969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001613b2d565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261008191600401613c49565b5050505050565b80516000908015610b4f5750600082602001516fffffffffffffffffffffffffffffffff16115b90505b919050565b83610bef57610b6583611e61565b7f3a20000000000000000000000000000000000000000000000000000000000000610b8f84611e61565b7f203c000000000000000000000000000000000000000000000000000000000000610bb985611f1b565b604051610ae19594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001613acf565b50505050565b606080610c7e8573ffffffffffffffffffffffffffffffffffffffff1663295c39a56040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4157600080fd5b505afa158015610c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7991908101906135e7565b61202a565b90506000610c8d858383612064565b9050610c9a848383612064565b90506000809050606082604051908082528060200260200182016040528015610cdd57816020015b610cca612d8c565b815260200190600190039081610cc25790505b50905060005b8451811015610f24576000858281518110610cfa57fe5b602002602001015190505b8015610f0d576000610d16826120c7565b90506000610d248483612280565b905060405180608001604052808281526020018d73ffffffffffffffffffffffffffffffffffffffff16631a7777bb846040518263ffffffff1660e01b8152600401610d709190613cc3565b60206040518083038186803b158015610d8857600080fd5b505afa158015610d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dc09190810190613493565b81526020018d73ffffffffffffffffffffffffffffffffffffffff16638928378e846040518263ffffffff1660e01b8152600401610dfe9190613cc3565b60206040518083038186803b158015610e1657600080fd5b505afa158015610e2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e4e9190810190613493565b81526020018d73ffffffffffffffffffffffffffffffffffffffff166356ea84b2846040518263ffffffff1660e01b8152600401610e8c9190613cc3565b60606040518083038186803b158015610ea457600080fd5b505afa158015610eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610edc91908101906134b1565b90528551600188019787918110610eef57fe5b6020026020010181905250610f04838361228b565b92505050610d05565b84841415610f1b5750610f24565b50600101610ce3565b5093505050505b9392505050565b610f3a612d27565b610f42612d8c565b610f50856060015185612294565b9050610f5a612d8c565b610f68866060015185612294565b60408084015151908201515160c0890151929350909160009063ffffffff161561104d57610f94612dc5565b60a08a015160c08b01516040517fb139654200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163b139654291610ff3918d918d91600401613d3b565b604080518083038186803b15801561100a57600080fd5b505afa15801561101e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061104291908101906135b7565b519250611109915050565b88516040517fd24c48bc0000000000000000000000000000000000000000000000000000000081526111069184916111019173ffffffffffffffffffffffffffffffffffffffff169063d24c48bc906110ac908e908e90600401613cd1565b60206040518083038186803b1580156110c457600080fd5b505afa1580156110d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110fc9190810190613493565b6122aa565b6122e1565b90505b60405180610140016040528060008152602001600081526020016111c28b6000015173ffffffffffffffffffffffffffffffffffffffff166347d1b53c8d602001518d6040518363ffffffff1660e01b8152600401611169929190613ca8565b604080518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111b89190810190613599565b88606001516122fa565b815260200161120d8b6000015173ffffffffffffffffffffffffffffffffffffffff166347d1b53c8d604001518d6040518363ffffffff1660e01b8152600401611169929190613ca8565b81526020016112b18b6000015173ffffffffffffffffffffffffffffffffffffffff166347d1b53c8d604001518c6040518363ffffffff1660e01b8152600401611258929190613ca8565b604080518083038186803b15801561126f57600080fd5b505afa158015611283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112a79190810190613599565b87606001516122fa565b815260200189815260200188815260200184815260200183815260200182815250955050505050509392505050565b6020840151516114039073ffffffffffffffffffffffffffffffffffffffff163314806113b3575084516020860151516040517f3a031bf000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691633a031bf091611363913390600401613bb7565b60206040518083038186803b15801561137b57600080fd5b505afa15801561138f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113b39190810190613457565b7f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f53656e646572206e6f74206f70657261746f72000000000000000000000000008760200151600001516123ab565b61150583856000015173ffffffffffffffffffffffffffffffffffffffff16638fae3be18460008151811061143457fe5b60200260200101516040518263ffffffff1660e01b81526004016114589190613ba9565b60206040518083038186803b15801561147057600080fd5b505afa158015611484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114a891908101906135e7565b147f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f302d696e64657820746f6b656e207061746820696e636f727265637400000000846000815181106114f857fe5b60200260200101516123ab565b61160082856000015173ffffffffffffffffffffffffffffffffffffffff16638fae3be18460018651038151811061153957fe5b60200260200101516040518263ffffffff1660e01b815260040161155d9190613ba9565b60206040518083038186803b15801561157557600080fd5b505afa158015611589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115ad91908101906135e7565b147f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f6c6173742d696e64657820746f6b656e207061746820696e636f727265637400846001865103815181106114f857fe5b60c084015163ffffffff1661183257611617612dc5565b61161f612dc5565b61163b866000015187606001518860400151896080015161240d565b8151919350915061168f9015157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f4c6971756964206163636f756e74206e6f20737570706c790000000000000000611a41565b61182b600187516040808a015190517fe51bfcb400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163e51bfcb4916116ec91600401613c9a565b60206040518083038186803b15801561170457600080fd5b505afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061173c9190810190613475565b600281111561174757fe5b14806117e457506117e283600001518360000151896000015173ffffffffffffffffffffffffffffffffffffffff16634f3c15426040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a557600080fd5b505afa1580156117b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117dd9190810190613493565b612438565b155b7f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f4c6971756964206163636f756e74206e6f74206c6971756964617461626c6500611a41565b5050610bef565b60008460a0015173ffffffffffffffffffffffffffffffffffffffff16631be7dd838660400151856040518363ffffffff1660e01b8152600401611877929190613ca8565b60206040518083038186803b15801561188f57600080fd5b505afa1580156118a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118c79190810190613605565b63ffffffff1690506119328560c0015163ffffffff1682147f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f657870697279206d69736d617463680000000000000000000000000000000000848960c0015163ffffffff16610a1d565b610b2161193d612463565b63ffffffff168211157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f426f72726f77206e6f742079657420657870697265640000000000000000000084610b57565b60006119af8260600151602001518360e0015161247390919063ffffffff16565b905060006119d383608001516020015184610120015161247390919063ffffffff16565b9050808211611a0d57606083015160209081018051918501919091525160e0840151610120850151611a069291906124c7565b8352611a3c565b611a298360800151602001518461012001518560e0015161252c565b6020808501919091526080840151015183525b505050565b82611a3c57611a4f82611e61565b7f3a20000000000000000000000000000000000000000000000000000000000000611a7983611e61565b604051602001610ae193929190613aa7565b600082820183811015611aca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190613c5a565b90505b92915050565b6000611aca83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612542565b6060808251600101604051908082528060200260200182016040528015611b5657816020015b611b43612dd8565b815260200190600190039081611b3b5790505b50905060005b8351811015611b9857838181518110611b7157fe5b6020026020010151828281518110611b8557fe5b6020908102919091010152600101611b5c565b5083602001516000015173ffffffffffffffffffffffffffffffffffffffff1681600081518110611bc557fe5b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16148015611c13575083602001516020015181600081518110611c0557fe5b602002602001015160200151145b611c1957fe5b836040015181600183510381518110611c2e57fe5b60209081029190910101529392505050565b6060808251600101604051908082528060200260200182016040528015611c8157816020015b611c6e612def565b815260200190600190039081611c665790505b5060c087015190915063ffffffff1615611d65576040805161010081018252600581526000602080830182905283516080810185526001815292938401929190820190815260200160008152602001886000015181525081526020018660c0015181526020018660a0015181526020018760a0015173ffffffffffffffffffffffffffffffffffffffff168152602001600186510381526020018660c001518860c00151604051602001611d36929190613d63565b60405160208183030381529060405281525081600081518110611d5557fe5b6020026020010181905250611e13565b60408051610100810182526006815260006020808301829052835160808101855260018152929384019291908201908152600060208083018290528a5160409384015292845260c08a01518484015260a0808b0151858401526060850182905289517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01608086015282518281529384019092529201528251839190611e0757fe5b60200260200101819052505b60005b8351811015611e5557838181518110611e2b57fe5b6020026020010151828260010181518110611e4257fe5b6020908102919091010152600101611e16565b5090505b949350505050565b60608082604051602001611e759190613a92565b60408051601f19818403018152919052905060205b8015611f005781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110611ec357fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615611efb5760010181529050610b52565b611e8a565b5060408051600080825260208201909252905b509392505050565b606081611f5c575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610b52565b8160005b8115611f7457600101600a82049150611f60565b6060816040519080825280601f01601f191660200182016040528015611fa1576020820181803883390190505b508593509050815b8015612021577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b828281518110611fe757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611fa9565b50949350505050565b6060600161010083040160405190808252806020026020018201604052801561205d578160200160208202803883390190505b5092915050565b6000805b84518110156120be5761208e8486838151811061208157fe5b6020026020010151612588565b6120b6576120af848683815181106120a257fe5b60200260200101516125c8565b6001830192505b600101612068565b50909392505050565b600060ff6fffffffffffffffffffffffffffffffff83161561210a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8001612112565b608083901c92505b67ffffffffffffffff831615612149577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001612151565b604083901c92505b63ffffffff83161561216657601f190161216e565b602083901c92505b61ffff83161561219f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016121a7565b601083901c92505b60ff8316156121d7577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8016121df565b600883901c92505b600f83161561220f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01612217565b600483901c92505b6003831615612247577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161224f565b600283901c92505b6001831615610b4f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b610100919091020190565b6001901b900390565b61229c612d8c565b611aca8360008551856125fe565b6122b2612dc5565b6040805160208101909152825181906122d990670de0b6b3a764000063ffffffff611a8b16565b905292915050565b6000611aca838360000151670de0b6b3a764000061252c565b612302612dd8565b602083015183516fffffffffffffffffffffffffffffffff909116901561236e576040805180820190915260018152602084810151908201906123639084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6126e816565b815250915050611acd565b6040805180820190915260008152835160208201906123639084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6126e816565b83610bef576123b983611e61565b7f3a200000000000000000000000000000000000000000000000000000000000006123e384611e61565b7f203c000000000000000000000000000000000000000000000000000000000000610bb985612772565b612415612dc5565b61241d612dc5565b61242b8686868660016128e9565b9150915094509492505050565b60008061244584846122e1565b9050612457848263ffffffff611a8b16565b90941015949350505050565b600061246e42612abb565b905090565b60008261248257506000611acd565b8282028284828161248f57fe5b0414611aca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190613c6a565b60008315806124d4575082155b156124eb576124e4600083612b12565b9050610f2b565b611e59600161252084612514836125088a8a63ffffffff61247316565b9063ffffffff611ad316565b9063ffffffff612b1216565b9063ffffffff611a8b16565b6000611e5982612514868663ffffffff61247316565b60008184841115612580576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100819190613c49565b505050900390565b600080610100830490506000610100840690506000816001901b8684815181106125ae57fe5b602002602001015116905060008111935050505092915050565b815161010082049060ff8316906001821b908590849081106125e657fe5b60200260200101818151179150818152505050505050565b612606612d8c565b838303801580612638575080600114801561263857508286868151811061262957fe5b60200260200101516000015114155b1561266f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190613c7a565b60006002820486019050600087828151811061268757fe5b6020026020010151600001519050808510156126b3576126a9888884886125fe565b9350505050611e59565b808511156126ca576126a9888360010188886125fe565b8782815181106126d657fe5b60200260200101519350505050611e59565b60008315806126f5575082155b15612705576124e4600083612b12565b6000612717858563ffffffff61247316565b905061276961273660016125206002612514888463ffffffff611ad316565b612746838663ffffffff612b5416565b1015612753576000612756565b60015b60ff16612520838663ffffffff612b1216565b95945050505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b816000815181106127be57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b816001815181106127ff57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015611f13576002810261284a600f8516612b96565b83826029038151811061285957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c935061289b600f8516612b96565b8382602803815181106128aa57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101612831565b6128f1612dc5565b6128f9612dc5565b612901612dc5565b612909612dc5565b60005b8651811015612aac5761291d612dd8565b8a73ffffffffffffffffffffffffffffffffffffffff166347d1b53c8a8a858151811061294657fe5b60200260200101516040518363ffffffff1660e01b815260040161296b929190613ca8565b604080518083038186803b15801561298257600080fd5b505afa158015612996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129ba9190810190613599565b90506129c581612bb8565b156129d05750612aa4565b6129d8612d8c565b6129f58b8a85815181106129e857fe5b6020026020010151612294565b90506129ff612dd8565b612a0d8383606001516122fa565b6040830151516020820151919250600091612a2d9163ffffffff61247316565b9050612a37612dc5565b612a3f612bd2565b90508a15612a5757612a5484602001516122aa565b90505b825115612a8057612a79612a6b8383612bf4565b89519063ffffffff611a8b16565b8852612a9e565b612a9b612a8d83836122e1565b88519063ffffffff611a8b16565b87525b50505050505b60010161290c565b50909890975095505050505050565b600081610b4f63ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743332000000000000000000000084610b57565b6000611aca83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c0d565b6000611aca83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250612c5e565b6000600a821015612bae57506030810160f81b610b52565b5060570160f81b90565b602001516fffffffffffffffffffffffffffffffff161590565b612bda612dc5565b506040805160208101909152670de0b6b3a7640000815290565b6000611aca83670de0b6b3a7640000846000015161252c565b60008183612c48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100819190613c49565b506000838581612c5457fe5b0495945050505050565b60008183612c99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100819190613c49565b50828481612ca357fe5b06949350505050565b6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001612cdc612dd8565b8152602001612ce9612dd8565b81526020016060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600063ffffffff1681525090565b6040518061014001604052806000815260200160008152602001612d49612dd8565b8152602001612d56612dd8565b8152602001612d63612dd8565b815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806080016040528060008152602001612da6612dc5565b8152602001612db3612dc5565b8152602001612dc0612e4e565b905290565b6040518060200160405280600081525090565b604080518082019091526000808252602082015290565b604080516101008101825260008082526020820152908101612e0f612e6e565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b604080516060810182526000808252602082018190529181019190915290565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b8035611acd81613f33565b8051611acd81613f33565b600082601f830112612ebe57600080fd5b8135612ed1612ecc82613da5565b613d7e565b91508181835260208401935060208101905083856020840282011115612ef657600080fd5b60005b83811015612f225781612f0c8882612e97565b8452506020928301929190910190600101612ef9565b5050505092915050565b600082601f830112612f3d57600080fd5b8151612f4b612ecc82613da5565b81815260209384019390925082018360005b83811015612f225781518601612f7388826130f1565b8452506020928301929190910190600101612f5d565b600082601f830112612f9a57600080fd5b8151612fa8612ecc82613da5565b91508181835260208401935060208101905083856040840282011115612fcd57600080fd5b60005b83811015612f225781612fe388826132ca565b84525060209092019160409190910190600101612fd0565b600082601f83011261300c57600080fd5b815161301a612ecc82613da5565b9150818183526020840193506020810190508385602084028201111561303f57600080fd5b60005b83811015612f2257816130558882613398565b8452506020928301929190910190600101613042565b8035611acd81613f47565b8051611acd81613f47565b600082601f83011261309257600080fd5b81516130a0612ecc82613dc6565b915080825260208301602083018583830111156130bc57600080fd5b6130c7838284613ee6565b50505092915050565b8051611acd81613f50565b8051611acd81613f5d565b8051611acd81613f6a565b6000610160828403121561310457600080fd5b61310f610100613d7e565b9050600061311d84846130d0565b825250602061312e84848301613398565b6020830152506040613142848285016131cd565b60408301525060c061315684828501613398565b60608301525060e061316a84828501613398565b60808301525061010061317f84828501612ea2565b60a08301525061012061319484828501613398565b60c08301525061014082015167ffffffffffffffff8111156131b557600080fd5b6131c184828501613081565b60e08301525092915050565b6000608082840312156131df57600080fd5b6131e96080613d7e565b905060006131f78484613076565b8252506020613208848483016130db565b602083015250604061321c848285016130db565b604083015250606061323084828501613398565b60608301525092915050565b60006020828403121561324e57600080fd5b6132586020613d7e565b905060006132668484613398565b82525092915050565b60006060828403121561328157600080fd5b61328b6060613d7e565b9050600061329984846133ae565b82525060206132aa848483016133ae565b60208301525060406132be848285016133a3565b60408301525092915050565b6000604082840312156132dc57600080fd5b6132e66040613d7e565b905060006132f48484612ea2565b825250602061330584848301613398565b60208301525092915050565b60006040828403121561332357600080fd5b61332d6040613d7e565b9050600061333b8484612e97565b82525060206133058484830161338d565b60006040828403121561335e57600080fd5b6133686040613d7e565b905060006133768484613076565b8252506020613305848483018051611acd81613f77565b8035611acd81613f80565b8051611acd81613f80565b8051611acd81613f89565b8051611acd81613f92565b600080604083850312156133cc57600080fd5b825167ffffffffffffffff8111156133e357600080fd5b6133ef85828601612f89565b925050602083015167ffffffffffffffff81111561340c57600080fd5b61341885828601612f2c565b9150509250929050565b60006020828403121561343457600080fd5b815167ffffffffffffffff81111561344b57600080fd5b611e5984828501612ffb565b60006020828403121561346957600080fd5b6000611e598484613076565b60006020828403121561348757600080fd5b6000611e5984846130e6565b6000602082840312156134a557600080fd5b6000611e59848461323c565b6000606082840312156134c357600080fd5b6000611e59848461326f565b600080600080600080600080610140898b0312156134ec57600080fd5b60006134f88b8b613311565b98505060406135098b828c01613311565b975050608061351a8b828c0161338d565b96505060a061352b8b828c0161338d565b95505060c089013567ffffffffffffffff81111561354857600080fd5b6135548b828c01612ead565b94505060e06135658b828c0161338d565b9350506101006135778b828c0161338d565b9250506101206135898b828c0161306b565b9150509295985092959890939650565b6000604082840312156135ab57600080fd5b6000611e59848461334c565b600080604083850312156135ca57600080fd5b60006135d6858561323c565b92505060206134188582860161323c565b6000602082840312156135f957600080fd5b6000611e598484613398565b60006020828403121561361757600080fd5b6000611e5984846133a3565b600061362f8383613666565b505060200190565b6000611aca838361395f565b600061364f8383613a4b565b505060400190565b61366081613eba565b82525050565b61366081613e01565b600061367a82613df4565b6136848185613df8565b935061368f83613dee565b8060005b838110156136bd5781516136a78882613623565b97506136b283613dee565b925050600101613693565b509495945050505050565b60006136d382613df4565b6136dd8185613df8565b9350836020820285016136ef85613dee565b8060005b85811015613729578484038952815161370c8582613637565b945061371783613dee565b60209a909a01999250506001016136f3565b5091979650505050505050565b600061374182613df4565b61374b8185613df8565b935061375683613dee565b8060005b838110156136bd57815161376e8882613643565b975061377983613dee565b92505060010161375a565b61366081613e0c565b61366061379982613e11565b613e5b565b61366061379982613e36565b61366061379982613e5b565b60006137c182613df4565b6137cb8185610b52565b93506137db818560208601613ee6565b9290920192915050565b60006137f082613df4565b6137fa8185613df8565b935061380a818560208601613ee6565b61381381613f12565b9093019392505050565b61366081613ec5565b61366081613ed0565b600061383c601b83613df8565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000613875602183613df8565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006138d4602583613df8565b7f4c697175696461746f7250726f787948656c7065723a206974656d206e6f742081527f666f756e64000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000613933601f83613df8565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b8051600090610160840190613974858261381d565b5060208301516139876020860182613a80565b50604083015161399a6040860182613a01565b5060608301516139ad60c0860182613a80565b5060808301516139c060e0860182613a80565b5060a08301516139d4610100860182613666565b5060c08301516139e8610120860182613a80565b5060e083015184820361014086015261276982826137e5565b80516080830190613a128482613784565b506020820151613a256020850182613826565b506040820151613a386040850182613826565b506060820151610bef6060850182613a80565b80516040830190613a5c8482613666565b506020820151610bef6020850182613a80565b80516040830190613a5c8482613784565b61366081613e5b565b61366081613ea0565b6000613a9e82846137aa565b50602001919050565b6000613ab382866137b6565b9150613abf828561379e565b60028201915061276982846137b6565b6000613adb82896137b6565b9150613ae7828861379e565b600282019150613af782876137b6565b9150613b03828661379e565b600282019150613b1382856137b6565b9150613b1f828461378d565b506001019695505050505050565b6000613b39828b6137b6565b9150613b45828a61379e565b600282019150613b5582896137b6565b9150613b61828861379e565b600282019150613b7182876137b6565b9150613b7d828661379e565b600282019150613b8d82856137b6565b9150613b99828461378d565b5060010198975050505050505050565b60208101611acd8284613666565b60408101613bc58285613666565b610f2b6020830184613657565b60a08101613be08288613666565b613bed6020830187613a80565b613bfa6040830186613a80565b613c076060830185613a80565b8181036080830152613c19818461366f565b979650505050505050565b60408082528101613c358185613736565b90508181036020830152611e5981846136c8565b60208082528101611aca81846137e5565b60208082528101610b4f8161382f565b60208082528101610b4f81613868565b60208082528101610b4f816138c7565b60208082528101610b4f81613926565b60408101611acd8284613a4b565b60608101613cb68285613a4b565b610f2b6040830184613a80565b60208101611acd8284613a80565b60408101613cdf8285613a80565b610f2b6020830184613a80565b60e08101613cfa8289613a80565b613d076020830188613a80565b613d146040830187613a80565b613d216060830186613a6f565b613d2e60a0830185613a80565b613c1960c0830184613a80565b60608101613d498286613a80565b613d566020830185613a80565b611e596040830184613a89565b60408101613d718285613a80565b610f2b6020830184613a89565b60405181810167ffffffffffffffff81118282101715613d9d57600080fd5b604052919050565b600067ffffffffffffffff821115613dbc57600080fd5b5060209081020190565b600067ffffffffffffffff821115613ddd57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b6000610b4f82613e87565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b80610b5281613f1c565b80610b5281613f29565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b6bffffffffffffffffffffffff1690565b6000610b4f82613edb565b6000610b4f82613e5e565b6000610b4f82613e68565b6000610b4f82613e01565b60005b83811015613f01578181015183820152602001613ee9565b83811115610bef5750506000910152565b601f01601f191690565b60098110613f2657fe5b50565b60028110613f2657fe5b613f3c81613e01565b8114613f2657600080fd5b613f3c81613e0c565b60098110613f2657600080fd5b60028110613f2657600080fd5b60038110613f2657600080fd5b613f3c81613e72565b613f3c81613e5b565b613f3c81613ea0565b613f3c81613ea956fea365627a7a723158206ccf59fb7df9fb3ad2aa5d768f580b7855f4d18ebbdbd57715a4db0e662d3cf36c6578706572696d656e74616cf564736f6c63430005100040",
|
|
164
|
-
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80634e2d2fbf14610030575b600080fd5b61004361003e3660046134cf565b610045565b005b60005460ff1661008a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190613c8a565b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610102868614157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f6f7765644d61726b657420657175616c732068656c644d61726b6574000000008989610a1d565b6000546040517f47d1b53c000000000000000000000000000000000000000000000000000000008152610203916101ba9161010090910473ffffffffffffffffffffffffffffffffffffffff16906347d1b53c90610166908c908c90600401613ca8565b604080518083038186803b15801561017d57600080fd5b505afa158015610191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101b59190810190613599565b610b28565b157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f6f776564206d61726b65742063616e6e6f7420626520706f736974697665000089610b57565b6000546040517f47d1b53c0000000000000000000000000000000000000000000000000000000081526102af916102679161010090910473ffffffffffffffffffffffffffffffffffffffff16906347d1b53c90610166908c908b90600401613ca8565b7f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f68656c64206d61726b65742063616e6e6f74206265206e65676174697665000088610b57565b610303838463ffffffff16147f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f657870697279206f766572666c6f77000000000000000000000000000000000086610b57565b61030b612cac565b600054610100900473ffffffffffffffffffffffffffffffffffffffff16808252602082018a905260408083018a9052517f98d4611b0000000000000000000000000000000000000000000000000000000081526398d4611b90610373908b90600401613c9a565b60006040518083038186803b15801561038b57600080fd5b505afa15801561039f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103c79190810190613422565b608082015280516040517f98d4611b000000000000000000000000000000000000000000000000000000008152610483919073ffffffffffffffffffffffffffffffffffffffff8216906398d4611b90610425908e90600401613c9a565b60006040518083038186803b15801561043d57600080fd5b505afa158015610451573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104799190810190613422565b8360800151610bf5565b6060820152836104945760006104ae565b60025473ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff1660a082015263ffffffff841660c08201526104dd612d27565b6104e882888a610f32565b90506104f682888a896112e0565b6104ff8161198e565b805161054e9015157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f6e6f7468696e6720746f206c6971756964617465000000000000000000000000611a41565b60208101516040820151511561057b5760408201516020015161057890829063ffffffff611a8b16565b90505b606080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fd15c8918660200151600001518760200151602001517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88600001518e6040518663ffffffff1660e01b8152600401610615959493929190613bd2565b60006040518083038186803b15801561062d57600080fd5b505afa158015610641573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066991908101906133b9565b915091508060008151811061067a57fe5b6020026020010151604001516060015184602001511061075e5760006106c9826000815181106106a657fe5b602002602001015160400151606001518660200151611ad390919063ffffffff16565b905060008c905086602001516000015173ffffffffffffffffffffffffffffffffffffffff167fd830e4105186a902ac3d9e3080ccf4c3afa7191753281b0abdb147a603b6d4dd8860200151602001518e8960200151604051806040016040528060011515815260200188815250868c6000015160405161074f96959493929190613cec565b60405180910390a2505061095d565b6107c886157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f746f74616c536f6c696448656c6457656920697320746f6f20736d616c6c000086856000815181106107b357fe5b60200260200101516040015160600151610a1d565b60006107fd8560200151836000815181106107df57fe5b60200260200101516040015160600151611ad390919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a6e58f5876020015160000151886020015160200151878c8f6040518663ffffffff1660e01b8152600401610872959493929190613bd2565b60006040518083038186803b15801561088a57600080fd5b505afa15801561089e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108c691908101906133b9565b809350819450505060008c905086602001516000015173ffffffffffffffffffffffffffffffffffffffff167fd830e4105186a902ac3d9e3080ccf4c3afa7191753281b0abdb147a603b6d4dd8860200151602001518e8960200151604051806040016040528060001515815260200188815250868c6000015160405161095296959493929190613cec565b60405180910390a250505b6109678583611b15565b855190925073ffffffffffffffffffffffffffffffffffffffff1663a67a6a458361099488888387611c40565b6040518363ffffffff1660e01b81526004016109b1929190613c24565b600060405180830381600087803b1580156109cb57600080fd5b505af11580156109df573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055505050505050505050505050505050565b84610b2157610a2b84611e61565b7f3a20000000000000000000000000000000000000000000000000000000000000610a5585611e61565b7f203c000000000000000000000000000000000000000000000000000000000000610a7f86611f1b565b7f2c20000000000000000000000000000000000000000000000000000000000000610aa987611f1b565b604051610ae197969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001613b2d565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261008191600401613c49565b5050505050565b80516000908015610b4f5750600082602001516fffffffffffffffffffffffffffffffff16115b90505b919050565b83610bef57610b6583611e61565b7f3a20000000000000000000000000000000000000000000000000000000000000610b8f84611e61565b7f203c000000000000000000000000000000000000000000000000000000000000610bb985611f1b565b604051610ae19594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001613acf565b50505050565b606080610c7e8573ffffffffffffffffffffffffffffffffffffffff1663295c39a56040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4157600080fd5b505afa158015610c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7991908101906135e7565b61202a565b90506000610c8d858383612064565b9050610c9a848383612064565b90506000809050606082604051908082528060200260200182016040528015610cdd57816020015b610cca612d8c565b815260200190600190039081610cc25790505b50905060005b8451811015610f24576000858281518110610cfa57fe5b602002602001015190505b8015610f0d576000610d16826120c7565b90506000610d248483612280565b905060405180608001604052808281526020018d73ffffffffffffffffffffffffffffffffffffffff16631a7777bb846040518263ffffffff1660e01b8152600401610d709190613cc3565b60206040518083038186803b158015610d8857600080fd5b505afa158015610d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dc09190810190613493565b81526020018d73ffffffffffffffffffffffffffffffffffffffff16638928378e846040518263ffffffff1660e01b8152600401610dfe9190613cc3565b60206040518083038186803b158015610e1657600080fd5b505afa158015610e2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e4e9190810190613493565b81526020018d73ffffffffffffffffffffffffffffffffffffffff166356ea84b2846040518263ffffffff1660e01b8152600401610e8c9190613cc3565b60606040518083038186803b158015610ea457600080fd5b505afa158015610eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610edc91908101906134b1565b90528551600188019787918110610eef57fe5b6020026020010181905250610f04838361228b565b92505050610d05565b84841415610f1b5750610f24565b50600101610ce3565b5093505050505b9392505050565b610f3a612d27565b610f42612d8c565b610f50856060015185612294565b9050610f5a612d8c565b610f68866060015185612294565b60408084015151908201515160c0890151929350909160009063ffffffff161561104d57610f94612dc5565b60a08a015160c08b01516040517fb139654200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163b139654291610ff3918d918d91600401613d3b565b604080518083038186803b15801561100a57600080fd5b505afa15801561101e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061104291908101906135b7565b519250611109915050565b88516040517fd24c48bc0000000000000000000000000000000000000000000000000000000081526111069184916111019173ffffffffffffffffffffffffffffffffffffffff169063d24c48bc906110ac908e908e90600401613cd1565b60206040518083038186803b1580156110c457600080fd5b505afa1580156110d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110fc9190810190613493565b6122aa565b6122e1565b90505b60405180610140016040528060008152602001600081526020016111c28b6000015173ffffffffffffffffffffffffffffffffffffffff166347d1b53c8d602001518d6040518363ffffffff1660e01b8152600401611169929190613ca8565b604080518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111b89190810190613599565b88606001516122fa565b815260200161120d8b6000015173ffffffffffffffffffffffffffffffffffffffff166347d1b53c8d604001518d6040518363ffffffff1660e01b8152600401611169929190613ca8565b81526020016112b18b6000015173ffffffffffffffffffffffffffffffffffffffff166347d1b53c8d604001518c6040518363ffffffff1660e01b8152600401611258929190613ca8565b604080518083038186803b15801561126f57600080fd5b505afa158015611283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112a79190810190613599565b87606001516122fa565b815260200189815260200188815260200184815260200183815260200182815250955050505050509392505050565b6020840151516114039073ffffffffffffffffffffffffffffffffffffffff163314806113b3575084516020860151516040517f3a031bf000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691633a031bf091611363913390600401613bb7565b60206040518083038186803b15801561137b57600080fd5b505afa15801561138f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113b39190810190613457565b7f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f53656e646572206e6f74206f70657261746f72000000000000000000000000008760200151600001516123ab565b61150583856000015173ffffffffffffffffffffffffffffffffffffffff16638fae3be18460008151811061143457fe5b60200260200101516040518263ffffffff1660e01b81526004016114589190613ba9565b60206040518083038186803b15801561147057600080fd5b505afa158015611484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114a891908101906135e7565b147f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f302d696e64657820746f6b656e207061746820696e636f727265637400000000846000815181106114f857fe5b60200260200101516123ab565b61160082856000015173ffffffffffffffffffffffffffffffffffffffff16638fae3be18460018651038151811061153957fe5b60200260200101516040518263ffffffff1660e01b815260040161155d9190613ba9565b60206040518083038186803b15801561157557600080fd5b505afa158015611589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115ad91908101906135e7565b147f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f6c6173742d696e64657820746f6b656e207061746820696e636f727265637400846001865103815181106114f857fe5b60c084015163ffffffff1661183257611617612dc5565b61161f612dc5565b61163b866000015187606001518860400151896080015161240d565b8151919350915061168f9015157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f4c6971756964206163636f756e74206e6f20737570706c790000000000000000611a41565b61182b600187516040808a015190517fe51bfcb400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163e51bfcb4916116ec91600401613c9a565b60206040518083038186803b15801561170457600080fd5b505afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061173c9190810190613475565b600281111561174757fe5b14806117e457506117e283600001518360000151896000015173ffffffffffffffffffffffffffffffffffffffff16634f3c15426040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a557600080fd5b505afa1580156117b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117dd9190810190613493565b612438565b155b7f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f4c6971756964206163636f756e74206e6f74206c6971756964617461626c6500611a41565b5050610bef565b60008460a0015173ffffffffffffffffffffffffffffffffffffffff16631be7dd838660400151856040518363ffffffff1660e01b8152600401611877929190613ca8565b60206040518083038186803b15801561188f57600080fd5b505afa1580156118a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118c79190810190613605565b63ffffffff1690506119328560c0015163ffffffff1682147f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f657870697279206d69736d617463680000000000000000000000000000000000848960c0015163ffffffff16610a1d565b610b2161193d612463565b63ffffffff168211157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f426f72726f77206e6f742079657420657870697265640000000000000000000084610b57565b60006119af8260600151602001518360e0015161247390919063ffffffff16565b905060006119d383608001516020015184610120015161247390919063ffffffff16565b9050808211611a0d57606083015160209081018051918501919091525160e0840151610120850151611a069291906124c7565b8352611a3c565b611a298360800151602001518461012001518560e0015161252c565b6020808501919091526080840151015183525b505050565b82611a3c57611a4f82611e61565b7f3a20000000000000000000000000000000000000000000000000000000000000611a7983611e61565b604051602001610ae193929190613aa7565b600082820183811015611aca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190613c5a565b90505b92915050565b6000611aca83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612542565b6060808251600101604051908082528060200260200182016040528015611b5657816020015b611b43612dd8565b815260200190600190039081611b3b5790505b50905060005b8351811015611b9857838181518110611b7157fe5b6020026020010151828281518110611b8557fe5b6020908102919091010152600101611b5c565b5083602001516000015173ffffffffffffffffffffffffffffffffffffffff1681600081518110611bc557fe5b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16148015611c13575083602001516020015181600081518110611c0557fe5b602002602001015160200151145b611c1957fe5b836040015181600183510381518110611c2e57fe5b60209081029190910101529392505050565b6060808251600101604051908082528060200260200182016040528015611c8157816020015b611c6e612def565b815260200190600190039081611c665790505b5060c087015190915063ffffffff1615611d65576040805161010081018252600581526000602080830182905283516080810185526001815292938401929190820190815260200160008152602001886000015181525081526020018660c0015181526020018660a0015181526020018760a0015173ffffffffffffffffffffffffffffffffffffffff168152602001600186510381526020018660c001518860c00151604051602001611d36929190613d63565b60405160208183030381529060405281525081600081518110611d5557fe5b6020026020010181905250611e13565b60408051610100810182526006815260006020808301829052835160808101855260018152929384019291908201908152600060208083018290528a5160409384015292845260c08a01518484015260a0808b0151858401526060850182905289517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01608086015282518281529384019092529201528251839190611e0757fe5b60200260200101819052505b60005b8351811015611e5557838181518110611e2b57fe5b6020026020010151828260010181518110611e4257fe5b6020908102919091010152600101611e16565b5090505b949350505050565b60608082604051602001611e759190613a92565b60408051601f19818403018152919052905060205b8015611f005781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110611ec357fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615611efb5760010181529050610b52565b611e8a565b5060408051600080825260208201909252905b509392505050565b606081611f5c575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610b52565b8160005b8115611f7457600101600a82049150611f60565b6060816040519080825280601f01601f191660200182016040528015611fa1576020820181803883390190505b508593509050815b8015612021577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b828281518110611fe757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611fa9565b50949350505050565b6060600161010083040160405190808252806020026020018201604052801561205d578160200160208202803883390190505b5092915050565b6000805b84518110156120be5761208e8486838151811061208157fe5b6020026020010151612588565b6120b6576120af848683815181106120a257fe5b60200260200101516125c8565b6001830192505b600101612068565b50909392505050565b600060ff6fffffffffffffffffffffffffffffffff83161561210a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8001612112565b608083901c92505b67ffffffffffffffff831615612149577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001612151565b604083901c92505b63ffffffff83161561216657601f190161216e565b602083901c92505b61ffff83161561219f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016121a7565b601083901c92505b60ff8316156121d7577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8016121df565b600883901c92505b600f83161561220f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01612217565b600483901c92505b6003831615612247577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161224f565b600283901c92505b6001831615610b4f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b610100919091020190565b6001901b900390565b61229c612d8c565b611aca8360008551856125fe565b6122b2612dc5565b6040805160208101909152825181906122d990670de0b6b3a764000063ffffffff611a8b16565b905292915050565b6000611aca838360000151670de0b6b3a764000061252c565b612302612dd8565b602083015183516fffffffffffffffffffffffffffffffff909116901561236e576040805180820190915260018152602084810151908201906123639084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6126e816565b815250915050611acd565b6040805180820190915260008152835160208201906123639084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6126e816565b83610bef576123b983611e61565b7f3a200000000000000000000000000000000000000000000000000000000000006123e384611e61565b7f203c000000000000000000000000000000000000000000000000000000000000610bb985612772565b612415612dc5565b61241d612dc5565b61242b8686868660016128e9565b9150915094509492505050565b60008061244584846122e1565b9050612457848263ffffffff611a8b16565b90941015949350505050565b600061246e42612abb565b905090565b60008261248257506000611acd565b8282028284828161248f57fe5b0414611aca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190613c6a565b60008315806124d4575082155b156124eb576124e4600083612b12565b9050610f2b565b611e59600161252084612514836125088a8a63ffffffff61247316565b9063ffffffff611ad316565b9063ffffffff612b1216565b9063ffffffff611a8b16565b6000611e5982612514868663ffffffff61247316565b60008184841115612580576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100819190613c49565b505050900390565b600080610100830490506000610100840690506000816001901b8684815181106125ae57fe5b602002602001015116905060008111935050505092915050565b815161010082049060ff8316906001821b908590849081106125e657fe5b60200260200101818151179150818152505050505050565b612606612d8c565b838303801580612638575080600114801561263857508286868151811061262957fe5b60200260200101516000015114155b1561266f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190613c7a565b60006002820486019050600087828151811061268757fe5b6020026020010151600001519050808510156126b3576126a9888884886125fe565b9350505050611e59565b808511156126ca576126a9888360010188886125fe565b8782815181106126d657fe5b60200260200101519350505050611e59565b60008315806126f5575082155b15612705576124e4600083612b12565b6000612717858563ffffffff61247316565b905061276961273660016125206002612514888463ffffffff611ad316565b612746838663ffffffff612b5416565b1015612753576000612756565b60015b60ff16612520838663ffffffff612b1216565b95945050505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b816000815181106127be57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b816001815181106127ff57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015611f13576002810261284a600f8516612b96565b83826029038151811061285957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c935061289b600f8516612b96565b8382602803815181106128aa57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101612831565b6128f1612dc5565b6128f9612dc5565b612901612dc5565b612909612dc5565b60005b8651811015612aac5761291d612dd8565b8a73ffffffffffffffffffffffffffffffffffffffff166347d1b53c8a8a858151811061294657fe5b60200260200101516040518363ffffffff1660e01b815260040161296b929190613ca8565b604080518083038186803b15801561298257600080fd5b505afa158015612996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129ba9190810190613599565b90506129c581612bb8565b156129d05750612aa4565b6129d8612d8c565b6129f58b8a85815181106129e857fe5b6020026020010151612294565b90506129ff612dd8565b612a0d8383606001516122fa565b6040830151516020820151919250600091612a2d9163ffffffff61247316565b9050612a37612dc5565b612a3f612bd2565b90508a15612a5757612a5484602001516122aa565b90505b825115612a8057612a79612a6b8383612bf4565b89519063ffffffff611a8b16565b8852612a9e565b612a9b612a8d83836122e1565b88519063ffffffff611a8b16565b87525b50505050505b60010161290c565b50909890975095505050505050565b600081610b4f63ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743332000000000000000000000084610b57565b6000611aca83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c0d565b6000611aca83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250612c5e565b6000600a821015612bae57506030810160f81b610b52565b5060570160f81b90565b602001516fffffffffffffffffffffffffffffffff161590565b612bda612dc5565b506040805160208101909152670de0b6b3a7640000815290565b6000611aca83670de0b6b3a7640000846000015161252c565b60008183612c48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100819190613c49565b506000838581612c5457fe5b0495945050505050565b60008183612c99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100819190613c49565b50828481612ca357fe5b06949350505050565b6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001612cdc612dd8565b8152602001612ce9612dd8565b81526020016060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600063ffffffff1681525090565b6040518061014001604052806000815260200160008152602001612d49612dd8565b8152602001612d56612dd8565b8152602001612d63612dd8565b815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806080016040528060008152602001612da6612dc5565b8152602001612db3612dc5565b8152602001612dc0612e4e565b905290565b6040518060200160405280600081525090565b604080518082019091526000808252602082015290565b604080516101008101825260008082526020820152908101612e0f612e6e565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b604080516060810182526000808252602082018190529181019190915290565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b8035611acd81613f33565b8051611acd81613f33565b600082601f830112612ebe57600080fd5b8135612ed1612ecc82613da5565b613d7e565b91508181835260208401935060208101905083856020840282011115612ef657600080fd5b60005b83811015612f225781612f0c8882612e97565b8452506020928301929190910190600101612ef9565b5050505092915050565b600082601f830112612f3d57600080fd5b8151612f4b612ecc82613da5565b81815260209384019390925082018360005b83811015612f225781518601612f7388826130f1565b8452506020928301929190910190600101612f5d565b600082601f830112612f9a57600080fd5b8151612fa8612ecc82613da5565b91508181835260208401935060208101905083856040840282011115612fcd57600080fd5b60005b83811015612f225781612fe388826132ca565b84525060209092019160409190910190600101612fd0565b600082601f83011261300c57600080fd5b815161301a612ecc82613da5565b9150818183526020840193506020810190508385602084028201111561303f57600080fd5b60005b83811015612f2257816130558882613398565b8452506020928301929190910190600101613042565b8035611acd81613f47565b8051611acd81613f47565b600082601f83011261309257600080fd5b81516130a0612ecc82613dc6565b915080825260208301602083018583830111156130bc57600080fd5b6130c7838284613ee6565b50505092915050565b8051611acd81613f50565b8051611acd81613f5d565b8051611acd81613f6a565b6000610160828403121561310457600080fd5b61310f610100613d7e565b9050600061311d84846130d0565b825250602061312e84848301613398565b6020830152506040613142848285016131cd565b60408301525060c061315684828501613398565b60608301525060e061316a84828501613398565b60808301525061010061317f84828501612ea2565b60a08301525061012061319484828501613398565b60c08301525061014082015167ffffffffffffffff8111156131b557600080fd5b6131c184828501613081565b60e08301525092915050565b6000608082840312156131df57600080fd5b6131e96080613d7e565b905060006131f78484613076565b8252506020613208848483016130db565b602083015250604061321c848285016130db565b604083015250606061323084828501613398565b60608301525092915050565b60006020828403121561324e57600080fd5b6132586020613d7e565b905060006132668484613398565b82525092915050565b60006060828403121561328157600080fd5b61328b6060613d7e565b9050600061329984846133ae565b82525060206132aa848483016133ae565b60208301525060406132be848285016133a3565b60408301525092915050565b6000604082840312156132dc57600080fd5b6132e66040613d7e565b905060006132f48484612ea2565b825250602061330584848301613398565b60208301525092915050565b60006040828403121561332357600080fd5b61332d6040613d7e565b9050600061333b8484612e97565b82525060206133058484830161338d565b60006040828403121561335e57600080fd5b6133686040613d7e565b905060006133768484613076565b8252506020613305848483018051611acd81613f77565b8035611acd81613f80565b8051611acd81613f80565b8051611acd81613f89565b8051611acd81613f92565b600080604083850312156133cc57600080fd5b825167ffffffffffffffff8111156133e357600080fd5b6133ef85828601612f89565b925050602083015167ffffffffffffffff81111561340c57600080fd5b61341885828601612f2c565b9150509250929050565b60006020828403121561343457600080fd5b815167ffffffffffffffff81111561344b57600080fd5b611e5984828501612ffb565b60006020828403121561346957600080fd5b6000611e598484613076565b60006020828403121561348757600080fd5b6000611e5984846130e6565b6000602082840312156134a557600080fd5b6000611e59848461323c565b6000606082840312156134c357600080fd5b6000611e59848461326f565b600080600080600080600080610140898b0312156134ec57600080fd5b60006134f88b8b613311565b98505060406135098b828c01613311565b975050608061351a8b828c0161338d565b96505060a061352b8b828c0161338d565b95505060c089013567ffffffffffffffff81111561354857600080fd5b6135548b828c01612ead565b94505060e06135658b828c0161338d565b9350506101006135778b828c0161338d565b9250506101206135898b828c0161306b565b9150509295985092959890939650565b6000604082840312156135ab57600080fd5b6000611e59848461334c565b600080604083850312156135ca57600080fd5b60006135d6858561323c565b92505060206134188582860161323c565b6000602082840312156135f957600080fd5b6000611e598484613398565b60006020828403121561361757600080fd5b6000611e5984846133a3565b600061362f8383613666565b505060200190565b6000611aca838361395f565b600061364f8383613a4b565b505060400190565b61366081613eba565b82525050565b61366081613e01565b600061367a82613df4565b6136848185613df8565b935061368f83613dee565b8060005b838110156136bd5781516136a78882613623565b97506136b283613dee565b925050600101613693565b509495945050505050565b60006136d382613df4565b6136dd8185613df8565b9350836020820285016136ef85613dee565b8060005b85811015613729578484038952815161370c8582613637565b945061371783613dee565b60209a909a01999250506001016136f3565b5091979650505050505050565b600061374182613df4565b61374b8185613df8565b935061375683613dee565b8060005b838110156136bd57815161376e8882613643565b975061377983613dee565b92505060010161375a565b61366081613e0c565b61366061379982613e11565b613e5b565b61366061379982613e36565b61366061379982613e5b565b60006137c182613df4565b6137cb8185610b52565b93506137db818560208601613ee6565b9290920192915050565b60006137f082613df4565b6137fa8185613df8565b935061380a818560208601613ee6565b61381381613f12565b9093019392505050565b61366081613ec5565b61366081613ed0565b600061383c601b83613df8565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000613875602183613df8565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006138d4602583613df8565b7f4c697175696461746f7250726f787948656c7065723a206974656d206e6f742081527f666f756e64000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000613933601f83613df8565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b8051600090610160840190613974858261381d565b5060208301516139876020860182613a80565b50604083015161399a6040860182613a01565b5060608301516139ad60c0860182613a80565b5060808301516139c060e0860182613a80565b5060a08301516139d4610100860182613666565b5060c08301516139e8610120860182613a80565b5060e083015184820361014086015261276982826137e5565b80516080830190613a128482613784565b506020820151613a256020850182613826565b506040820151613a386040850182613826565b506060820151610bef6060850182613a80565b80516040830190613a5c8482613666565b506020820151610bef6020850182613a80565b80516040830190613a5c8482613784565b61366081613e5b565b61366081613ea0565b6000613a9e82846137aa565b50602001919050565b6000613ab382866137b6565b9150613abf828561379e565b60028201915061276982846137b6565b6000613adb82896137b6565b9150613ae7828861379e565b600282019150613af782876137b6565b9150613b03828661379e565b600282019150613b1382856137b6565b9150613b1f828461378d565b506001019695505050505050565b6000613b39828b6137b6565b9150613b45828a61379e565b600282019150613b5582896137b6565b9150613b61828861379e565b600282019150613b7182876137b6565b9150613b7d828661379e565b600282019150613b8d82856137b6565b9150613b99828461378d565b5060010198975050505050505050565b60208101611acd8284613666565b60408101613bc58285613666565b610f2b6020830184613657565b60a08101613be08288613666565b613bed6020830187613a80565b613bfa6040830186613a80565b613c076060830185613a80565b8181036080830152613c19818461366f565b979650505050505050565b60408082528101613c358185613736565b90508181036020830152611e5981846136c8565b60208082528101611aca81846137e5565b60208082528101610b4f8161382f565b60208082528101610b4f81613868565b60208082528101610b4f816138c7565b60208082528101610b4f81613926565b60408101611acd8284613a4b565b60608101613cb68285613a4b565b610f2b6040830184613a80565b60208101611acd8284613a80565b60408101613cdf8285613a80565b610f2b6020830184613a80565b60e08101613cfa8289613a80565b613d076020830188613a80565b613d146040830187613a80565b613d216060830186613a6f565b613d2e60a0830185613a80565b613c1960c0830184613a80565b60608101613d498286613a80565b613d566020830185613a80565b611e596040830184613a89565b60408101613d718285613a80565b610f2b6020830184613a89565b60405181810167ffffffffffffffff81118282101715613d9d57600080fd5b604052919050565b600067ffffffffffffffff821115613dbc57600080fd5b5060209081020190565b600067ffffffffffffffff821115613ddd57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b6000610b4f82613e87565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b80610b5281613f1c565b80610b5281613f29565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b6bffffffffffffffffffffffff1690565b6000610b4f82613edb565b6000610b4f82613e5e565b6000610b4f82613e68565b6000610b4f82613e01565b60005b83811015613f01578181015183820152602001613ee9565b83811115610bef5750506000910152565b601f01601f191690565b60098110613f2657fe5b50565b60028110613f2657fe5b613f3c81613e01565b8114613f2657600080fd5b613f3c81613e0c565b60098110613f2657600080fd5b60028110613f2657600080fd5b60038110613f2657600080fd5b613f3c81613e72565b613f3c81613e5b565b613f3c81613ea0565b613f3c81613ea956fea365627a7a723158206ccf59fb7df9fb3ad2aa5d768f580b7855f4d18ebbdbd57715a4db0e662d3cf36c6578706572696d656e74616cf564736f6c63430005100040",
|
|
162
|
+
"metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dolomiteMargin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dolomiteAmmRouterProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expiryProxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"solidAccountOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"solidAccountNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"heldMarket\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"heldDeltaWeiWithReward\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Types.Wei\",\"name\":\"profitHeldWei\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"owedMarket\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"owedDeltaWei\",\"type\":\"uint256\"}],\"name\":\"LogLiquidateWithAmm\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"solidAccount\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"liquidAccount\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"owedMarket\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"heldMarket\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minOwedOutputAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"revertOnFailToSellCollateral\",\"type\":\"bool\"}],\"name\":\"liquidate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Dolomite * Contract for liquidating other accounts in DolomiteMargin and atomically selling off collateral via Dolomite AMM markets.\",\"methods\":{\"liquidate((address,uint256),(address,uint256),uint256,uint256,address[],uint256,uint256,bool)\":{\"params\":{\"expiry\":\"The time at which the position expires, if this liquidation is for closing an expired position. Else, 0.\",\"heldMarket\":\"The held market whose collateral will be recovered to take on the debt of `owedMarket`\",\"liquidAccount\":\"The account that will be liquidated\",\"minOwedOutputAmount\":\"The minimum amount that should be outputted by the trade from heldWei to owedWei. Used to prevent sandwiching and mem-pool other attacks. Only used if `revertOnFailToSellCollateral` is set to `false` and the collateral cannot cover the `liquidAccount`'s debt.\",\"owedMarket\":\"The owed market whose borrowed value will be added to `toLiquidate`\",\"revertOnFailToSellCollateral\":\"True to revert the transaction completely if all collateral from the liquidation cannot repay the owed debt. False to swallow the error and sell whatever is possible. If set to false, the liquidator must have sufficient assets to be prevent becoming liquidated or under-collateralized.\",\"solidAccount\":\"The account that will do the liquidating\",\"tokenPath\":\"The path through which the trade will be routed to recover the collateral\"}}},\"title\":\"LiquidatorProxyV1WithAmm\"},\"userdoc\":{\"methods\":{\"liquidate((address,uint256),(address,uint256),uint256,uint256,address[],uint256,uint256,bool)\":{\"notice\":\"Liquidate liquidAccount using solidAccount. This contract and the msg.sender to this contract must both be operators for the solidAccount.\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/proxies/LiquidatorProxyV1WithAmm.sol\":\"LiquidatorProxyV1WithAmm\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/helpers/LiquidatorProxyHelper.sol\":{\"keccak256\":\"0x87d4f290fa884c943dafbbc3457449f5d6de153e1ff5891762ae4313949fc371\",\"urls\":[\"bzz-raw://a996eaaf35b7ba5e4d5ff543e1af89fdb5a0e095fe593f3cfff6232c48fabb15\",\"dweb:/ipfs/QmZaZoJWVYFMtVd5rjXP7wXYJxPjfDGftMbriG2Nzwdfoy\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/IDolomiteAmmFactory.sol\":{\"keccak256\":\"0xf5fd97ee3591ff30a3576d6d58847b5f6e156639578bed3827313a2c70823b78\",\"urls\":[\"bzz-raw://f9da41065f9b3b559bfc588cea01480f1c64ee7b1f1a86e54868f464fdfe2160\",\"dweb:/ipfs/QmWeBi2zSdPCENVV4fvCQ49HgnwLGxd3WS9sGMC4vR5NrB\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/IDolomiteAmmPair.sol\":{\"keccak256\":\"0xe2272c233467a78460e681419f0acdc765de0ad5357d3b768665f289941ccd47\",\"urls\":[\"bzz-raw://114f1c797f4e7e803b0764ae7107a2279c3da806450287c9e5600211faeeab57\",\"dweb:/ipfs/QmUoLx1rGgCdX5ScsUkp4NsSZLyVWdKsVKeXuPCtcrAvLn\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/IExpiry.sol\":{\"keccak256\":\"0xee5f04a47950c59594d8eeaefe44bfd9411331e481d10bb2e27dd5fa1c6a8921\",\"urls\":[\"bzz-raw://ea04d35f178214100d5602acddc65fe655df17f8ad75354193ef2ceaefbc7baa\",\"dweb:/ipfs/QmX384XSTcm7H8thzMEvkonVJBaPpTVgQHYZRug1rWBCNb\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/lib/DolomiteAmmLibrary.sol\":{\"keccak256\":\"0x0524ddd51d7e1d2763f53fa0cae47c068760930b4cdde9e09c2822a66a56bb86\",\"urls\":[\"bzz-raw://12cc579a1c687c6271b4ff3e7525253a3b84bb1f549b6703f3cfbae8a5b9a81b\",\"dweb:/ipfs/QmaezCERXxEuVu2ixydZcEyG3TzRwuP3ttKyaUDBT2HSrK\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/lib/TypedSignature.sol\":{\"keccak256\":\"0x4b4eb5fd2869d6c410948f78163773442c11bc82e393307e41359bbdb21577bf\",\"urls\":[\"bzz-raw://9c9c3abae44173086bc08f5479fbc67151d5905f60e1032ec6f9e40f841f3365\",\"dweb:/ipfs/QmbsQRX3gmcpimjFEW5ULJVavHQtViyg7NSQ2Q8Qcu6F6V\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/proxies/DolomiteAmmRouterProxy.sol\":{\"keccak256\":\"0x190991e1ecbdc7480da52841c4a475de493c1af3b5acd69934a87149054d4f4d\",\"urls\":[\"bzz-raw://16335a0f6dc2aebf0fdbab563bc95432dd35897ab6bf1aeb1c6c9fe7b300d1f7\",\"dweb:/ipfs/QmUUvrnVNvXwG2GRR3i9tibCLi2NDL2m7DD3jFedeYGCm7\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/proxies/LiquidatorProxyV1WithAmm.sol\":{\"keccak256\":\"0xa702525e65a5e100599a0401a74da049ba7bc4c14dd3e212db11c53c0455205d\",\"urls\":[\"bzz-raw://2387ba4c41912d20a38946d25bc9d3d6067b5fc0689541e6e2aef8afe159cfb9\",\"dweb:/ipfs/QmWkDRgrC2rP2Huc1hx1B2h7KjhRLin4L6MWpNNFbBfENA\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/interfaces/IUniswapV2Pair.sol\":{\"keccak256\":\"0x022ea15b611c155e236053a484d21223ae6f74da3828379cd8a34a16649b5945\",\"urls\":[\"bzz-raw://41979b601b10b34937f2f5939ab5c5240759c3434e405bf84a69ef94a1612454\",\"dweb:/ipfs/QmbK4y63kjtpbxFgResFo9K2bEhNxcxoTqddpJXeHxwqcT\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x1e73364879c267fdd2bfd871e62ee58ee3d65fbef3b71e3cc104fbff499eca6c\",\"urls\":[\"bzz-raw://e3b1327980a5949afd52cff4713f47ee4fdee9a8b376ceaa3402f5c9696b8c1b\",\"dweb:/ipfs/QmbhQzVEdaraPJizT5DTtk6CDzH3guHNipHW5T23uTtFkX\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/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/Events.sol\":{\"keccak256\":\"0x0c71c063b3a1b4e653d94c05f6fc49de43ccc28838e406faccb1c93f424995a8\",\"urls\":[\"bzz-raw://73268db2286565ecc242da93930780e8e4794015c8c0e58d336981ffdc6cfd3a\",\"dweb:/ipfs/QmRYzhuRtKXnTscERvYS9XzjqdQFBoJZoHwRAekHo6w6Zy\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x73e75454568c5dfc3bdcf7dbf2ddce6ab8d3d317618bc1f1957f7667e15d3799\",\"urls\":[\"bzz-raw://7b1c8a9a79c8ffdbb0fa633f713ae3dfeac93b31d2b1639614ac32d473fb8250\",\"dweb:/ipfs/QmfARP93W2mgeVwD9Lkd3yVmbCLF2Mos7o8HJ1x6WYQmxZ\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Math.sol\":{\"keccak256\":\"0x0c0c913b6ccdb69063f9ec84879fcad20a1ee6f44402c9f5ec2b4f5b9f2fa16b\",\"urls\":[\"bzz-raw://89b32eefb57e5e63ad8c6e079ae7bf2d2c8622776cd45af0cf304e1cafd6e078\",\"dweb:/ipfs/Qmcj7yRnYuTgKC3ZqZqe8rynHGYVDS3UrFExcVGcqeaDHY\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0xe641662503ea29ca959e84674188c3e9deaaf64c5623fb9560a4301c521ca1d3\",\"urls\":[\"bzz-raw://b10a04c7d014b99eb792c8c774e203c846d070b30cf0b715325fc07838ed6a6d\",\"dweb:/ipfs/QmUqZWnbchfEY9jM647yQamHe4GzspfUeRQF9k2nn1Hixd\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0xf930fbde3ab43ec8f079dbad062453b502542f53b7eec670c8e86c7a2e47dd9a\",\"urls\":[\"bzz-raw://e1c402fc55471e8372be478e99f91c28373f096e31f0ef1d5072dfdb81541c29\",\"dweb:/ipfs/QmTc8WSfFCbxNQqNpq1vptUVFxteKQ8HWEhyXREyPZ2neu\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x233d6ebf965711bf980f4bb2e672fb1a11b4b879fd41c884b3c2b704417d0d0c\",\"urls\":[\"bzz-raw://6478ff81706d531f9438b96274a7b904abbbd9c631540c68c6a89c3accf27abf\",\"dweb:/ipfs/QmWe9vkz3qwVjrcbmcTL8wgkjLPsrEqxcqPJL9ujM8PPbp\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0xd7bcae9e3c570544fc946a00cc7695106a64c20bc130d0183612c0410a531d19\",\"urls\":[\"bzz-raw://0ff5ffd6abb9ed223a64128c131afd962bec07fb9867cb62593906b339c76920\",\"dweb:/ipfs/QmbTrJL4bekvBqqaw6wXnBhYzS9uAqULSWF2VzW4cdfsM5\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xab134538648a2e223a7fe61db03c14f687657a5d37147f93c9088f11735aa311\",\"urls\":[\"bzz-raw://79dc7d2b30576d2349b99267642ac8d5fb7939c920b8d8045379d3614238bdc3\",\"dweb:/ipfs/QmaQJYg1nirHoWSC6G38Cjsk9pZBzEaNrGXKqTsvAzbyES\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}",
|
|
163
|
+
"bytecode": "0x60806040523480156200001157600080fd5b506040516200410c3803806200410c83398101604081905262000034916200009e565b600080546001600160a01b0394851661010002610100600160a81b031960ff199092166001908117929092161790915580549284166001600160a01b0319938416179055600280549190931691161790556200011e565b8051620000988162000104565b92915050565b600080600060608486031215620000b457600080fd5b6000620000c286866200008b565b9350506020620000d5868287016200008b565b9250506040620000e8868287016200008b565b9150509250925092565b60006001600160a01b03821662000098565b6200010f81620000f2565b81146200011b57600080fd5b50565b613fde806200012e6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80634e2d2fbf14610030575b600080fd5b61004361003e3660046134cf565b610045565b005b60005460ff1661008a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190613c8a565b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610102868614157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f6f7765644d61726b657420657175616c732068656c644d61726b6574000000008989610a1d565b6000546040517f47d1b53c000000000000000000000000000000000000000000000000000000008152610203916101ba9161010090910473ffffffffffffffffffffffffffffffffffffffff16906347d1b53c90610166908c908c90600401613ca8565b604080518083038186803b15801561017d57600080fd5b505afa158015610191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101b59190810190613599565b610b28565b157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f6f776564206d61726b65742063616e6e6f7420626520706f736974697665000089610b57565b6000546040517f47d1b53c0000000000000000000000000000000000000000000000000000000081526102af916102679161010090910473ffffffffffffffffffffffffffffffffffffffff16906347d1b53c90610166908c908b90600401613ca8565b7f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f68656c64206d61726b65742063616e6e6f74206265206e65676174697665000088610b57565b610303838463ffffffff16147f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f657870697279206f766572666c6f77000000000000000000000000000000000086610b57565b61030b612cac565b600054610100900473ffffffffffffffffffffffffffffffffffffffff16808252602082018a905260408083018a9052517f98d4611b0000000000000000000000000000000000000000000000000000000081526398d4611b90610373908b90600401613c9a565b60006040518083038186803b15801561038b57600080fd5b505afa15801561039f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103c79190810190613422565b608082015280516040517f98d4611b000000000000000000000000000000000000000000000000000000008152610483919073ffffffffffffffffffffffffffffffffffffffff8216906398d4611b90610425908e90600401613c9a565b60006040518083038186803b15801561043d57600080fd5b505afa158015610451573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104799190810190613422565b8360800151610bf5565b6060820152836104945760006104ae565b60025473ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff1660a082015263ffffffff841660c08201526104dd612d27565b6104e882888a610f32565b90506104f682888a896112e0565b6104ff8161198e565b805161054e9015157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f6e6f7468696e6720746f206c6971756964617465000000000000000000000000611a41565b60208101516040820151511561057b5760408201516020015161057890829063ffffffff611a8b16565b90505b606080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fd15c8918660200151600001518760200151602001517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88600001518e6040518663ffffffff1660e01b8152600401610615959493929190613bd2565b60006040518083038186803b15801561062d57600080fd5b505afa158015610641573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066991908101906133b9565b915091508060008151811061067a57fe5b6020026020010151604001516060015184602001511061075e5760006106c9826000815181106106a657fe5b602002602001015160400151606001518660200151611ad390919063ffffffff16565b905060008c905086602001516000015173ffffffffffffffffffffffffffffffffffffffff167fd830e4105186a902ac3d9e3080ccf4c3afa7191753281b0abdb147a603b6d4dd8860200151602001518e8960200151604051806040016040528060011515815260200188815250868c6000015160405161074f96959493929190613cec565b60405180910390a2505061095d565b6107c886157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f746f74616c536f6c696448656c6457656920697320746f6f20736d616c6c000086856000815181106107b357fe5b60200260200101516040015160600151610a1d565b60006107fd8560200151836000815181106107df57fe5b60200260200101516040015160600151611ad390919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a6e58f5876020015160000151886020015160200151878c8f6040518663ffffffff1660e01b8152600401610872959493929190613bd2565b60006040518083038186803b15801561088a57600080fd5b505afa15801561089e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108c691908101906133b9565b809350819450505060008c905086602001516000015173ffffffffffffffffffffffffffffffffffffffff167fd830e4105186a902ac3d9e3080ccf4c3afa7191753281b0abdb147a603b6d4dd8860200151602001518e8960200151604051806040016040528060001515815260200188815250868c6000015160405161095296959493929190613cec565b60405180910390a250505b6109678583611b15565b855190925073ffffffffffffffffffffffffffffffffffffffff1663a67a6a458361099488888387611c40565b6040518363ffffffff1660e01b81526004016109b1929190613c24565b600060405180830381600087803b1580156109cb57600080fd5b505af11580156109df573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055505050505050505050505050505050565b84610b2157610a2b84611e61565b7f3a20000000000000000000000000000000000000000000000000000000000000610a5585611e61565b7f203c000000000000000000000000000000000000000000000000000000000000610a7f86611f1b565b7f2c20000000000000000000000000000000000000000000000000000000000000610aa987611f1b565b604051610ae197969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001613b2d565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261008191600401613c49565b5050505050565b80516000908015610b4f5750600082602001516fffffffffffffffffffffffffffffffff16115b90505b919050565b83610bef57610b6583611e61565b7f3a20000000000000000000000000000000000000000000000000000000000000610b8f84611e61565b7f203c000000000000000000000000000000000000000000000000000000000000610bb985611f1b565b604051610ae19594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001613acf565b50505050565b606080610c7e8573ffffffffffffffffffffffffffffffffffffffff1663295c39a56040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4157600080fd5b505afa158015610c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7991908101906135e7565b61202a565b90506000610c8d858383612064565b9050610c9a848383612064565b90506000809050606082604051908082528060200260200182016040528015610cdd57816020015b610cca612d8c565b815260200190600190039081610cc25790505b50905060005b8451811015610f24576000858281518110610cfa57fe5b602002602001015190505b8015610f0d576000610d16826120c7565b90506000610d248483612280565b905060405180608001604052808281526020018d73ffffffffffffffffffffffffffffffffffffffff16631a7777bb846040518263ffffffff1660e01b8152600401610d709190613cc3565b60206040518083038186803b158015610d8857600080fd5b505afa158015610d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dc09190810190613493565b81526020018d73ffffffffffffffffffffffffffffffffffffffff16638928378e846040518263ffffffff1660e01b8152600401610dfe9190613cc3565b60206040518083038186803b158015610e1657600080fd5b505afa158015610e2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e4e9190810190613493565b81526020018d73ffffffffffffffffffffffffffffffffffffffff166356ea84b2846040518263ffffffff1660e01b8152600401610e8c9190613cc3565b60606040518083038186803b158015610ea457600080fd5b505afa158015610eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610edc91908101906134b1565b90528551600188019787918110610eef57fe5b6020026020010181905250610f04838361228b565b92505050610d05565b84841415610f1b5750610f24565b50600101610ce3565b5093505050505b9392505050565b610f3a612d27565b610f42612d8c565b610f50856060015185612294565b9050610f5a612d8c565b610f68866060015185612294565b60408084015151908201515160c0890151929350909160009063ffffffff161561104d57610f94612dc5565b60a08a015160c08b01516040517fb139654200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163b139654291610ff3918d918d91600401613d3b565b604080518083038186803b15801561100a57600080fd5b505afa15801561101e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061104291908101906135b7565b519250611109915050565b88516040517fd24c48bc0000000000000000000000000000000000000000000000000000000081526111069184916111019173ffffffffffffffffffffffffffffffffffffffff169063d24c48bc906110ac908e908e90600401613cd1565b60206040518083038186803b1580156110c457600080fd5b505afa1580156110d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110fc9190810190613493565b6122aa565b6122e1565b90505b60405180610140016040528060008152602001600081526020016111c28b6000015173ffffffffffffffffffffffffffffffffffffffff166347d1b53c8d602001518d6040518363ffffffff1660e01b8152600401611169929190613ca8565b604080518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111b89190810190613599565b88606001516122fa565b815260200161120d8b6000015173ffffffffffffffffffffffffffffffffffffffff166347d1b53c8d604001518d6040518363ffffffff1660e01b8152600401611169929190613ca8565b81526020016112b18b6000015173ffffffffffffffffffffffffffffffffffffffff166347d1b53c8d604001518c6040518363ffffffff1660e01b8152600401611258929190613ca8565b604080518083038186803b15801561126f57600080fd5b505afa158015611283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112a79190810190613599565b87606001516122fa565b815260200189815260200188815260200184815260200183815260200182815250955050505050509392505050565b6020840151516114039073ffffffffffffffffffffffffffffffffffffffff163314806113b3575084516020860151516040517f3a031bf000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691633a031bf091611363913390600401613bb7565b60206040518083038186803b15801561137b57600080fd5b505afa15801561138f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113b39190810190613457565b7f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f53656e646572206e6f74206f70657261746f72000000000000000000000000008760200151600001516123ab565b61150583856000015173ffffffffffffffffffffffffffffffffffffffff16638fae3be18460008151811061143457fe5b60200260200101516040518263ffffffff1660e01b81526004016114589190613ba9565b60206040518083038186803b15801561147057600080fd5b505afa158015611484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114a891908101906135e7565b147f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f302d696e64657820746f6b656e207061746820696e636f727265637400000000846000815181106114f857fe5b60200260200101516123ab565b61160082856000015173ffffffffffffffffffffffffffffffffffffffff16638fae3be18460018651038151811061153957fe5b60200260200101516040518263ffffffff1660e01b815260040161155d9190613ba9565b60206040518083038186803b15801561157557600080fd5b505afa158015611589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115ad91908101906135e7565b147f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f6c6173742d696e64657820746f6b656e207061746820696e636f727265637400846001865103815181106114f857fe5b60c084015163ffffffff1661183257611617612dc5565b61161f612dc5565b61163b866000015187606001518860400151896080015161240d565b8151919350915061168f9015157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f4c6971756964206163636f756e74206e6f20737570706c790000000000000000611a41565b61182b600187516040808a015190517fe51bfcb400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163e51bfcb4916116ec91600401613c9a565b60206040518083038186803b15801561170457600080fd5b505afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061173c9190810190613475565b600281111561174757fe5b14806117e457506117e283600001518360000151896000015173ffffffffffffffffffffffffffffffffffffffff16634f3c15426040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a557600080fd5b505afa1580156117b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117dd9190810190613493565b612438565b155b7f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f4c6971756964206163636f756e74206e6f74206c6971756964617461626c6500611a41565b5050610bef565b60008460a0015173ffffffffffffffffffffffffffffffffffffffff16631be7dd838660400151856040518363ffffffff1660e01b8152600401611877929190613ca8565b60206040518083038186803b15801561188f57600080fd5b505afa1580156118a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118c79190810190613605565b63ffffffff1690506119328560c0015163ffffffff1682147f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f657870697279206d69736d617463680000000000000000000000000000000000848960c0015163ffffffff16610a1d565b610b2161193d612463565b63ffffffff168211157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f426f72726f77206e6f742079657420657870697265640000000000000000000084610b57565b60006119af8260600151602001518360e0015161247390919063ffffffff16565b905060006119d383608001516020015184610120015161247390919063ffffffff16565b9050808211611a0d57606083015160209081018051918501919091525160e0840151610120850151611a069291906124c7565b8352611a3c565b611a298360800151602001518461012001518560e0015161252c565b6020808501919091526080840151015183525b505050565b82611a3c57611a4f82611e61565b7f3a20000000000000000000000000000000000000000000000000000000000000611a7983611e61565b604051602001610ae193929190613aa7565b600082820183811015611aca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190613c5a565b90505b92915050565b6000611aca83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612542565b6060808251600101604051908082528060200260200182016040528015611b5657816020015b611b43612dd8565b815260200190600190039081611b3b5790505b50905060005b8351811015611b9857838181518110611b7157fe5b6020026020010151828281518110611b8557fe5b6020908102919091010152600101611b5c565b5083602001516000015173ffffffffffffffffffffffffffffffffffffffff1681600081518110611bc557fe5b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16148015611c13575083602001516020015181600081518110611c0557fe5b602002602001015160200151145b611c1957fe5b836040015181600183510381518110611c2e57fe5b60209081029190910101529392505050565b6060808251600101604051908082528060200260200182016040528015611c8157816020015b611c6e612def565b815260200190600190039081611c665790505b5060c087015190915063ffffffff1615611d65576040805161010081018252600581526000602080830182905283516080810185526001815292938401929190820190815260200160008152602001886000015181525081526020018660c0015181526020018660a0015181526020018760a0015173ffffffffffffffffffffffffffffffffffffffff168152602001600186510381526020018660c001518860c00151604051602001611d36929190613d63565b60405160208183030381529060405281525081600081518110611d5557fe5b6020026020010181905250611e13565b60408051610100810182526006815260006020808301829052835160808101855260018152929384019291908201908152600060208083018290528a5160409384015292845260c08a01518484015260a0808b0151858401526060850182905289517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01608086015282518281529384019092529201528251839190611e0757fe5b60200260200101819052505b60005b8351811015611e5557838181518110611e2b57fe5b6020026020010151828260010181518110611e4257fe5b6020908102919091010152600101611e16565b5090505b949350505050565b60608082604051602001611e759190613a92565b60408051601f19818403018152919052905060205b8015611f005781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110611ec357fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615611efb5760010181529050610b52565b611e8a565b5060408051600080825260208201909252905b509392505050565b606081611f5c575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610b52565b8160005b8115611f7457600101600a82049150611f60565b6060816040519080825280601f01601f191660200182016040528015611fa1576020820181803883390190505b508593509050815b8015612021577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b828281518110611fe757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611fa9565b50949350505050565b6060600161010083040160405190808252806020026020018201604052801561205d578160200160208202803883390190505b5092915050565b6000805b84518110156120be5761208e8486838151811061208157fe5b6020026020010151612588565b6120b6576120af848683815181106120a257fe5b60200260200101516125c8565b6001830192505b600101612068565b50909392505050565b600060ff6fffffffffffffffffffffffffffffffff83161561210a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8001612112565b608083901c92505b67ffffffffffffffff831615612149577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001612151565b604083901c92505b63ffffffff83161561216657601f190161216e565b602083901c92505b61ffff83161561219f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016121a7565b601083901c92505b60ff8316156121d7577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8016121df565b600883901c92505b600f83161561220f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01612217565b600483901c92505b6003831615612247577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161224f565b600283901c92505b6001831615610b4f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b610100919091020190565b6001901b900390565b61229c612d8c565b611aca8360008551856125fe565b6122b2612dc5565b6040805160208101909152825181906122d990670de0b6b3a764000063ffffffff611a8b16565b905292915050565b6000611aca838360000151670de0b6b3a764000061252c565b612302612dd8565b602083015183516fffffffffffffffffffffffffffffffff909116901561236e576040805180820190915260018152602084810151908201906123639084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6126e816565b815250915050611acd565b6040805180820190915260008152835160208201906123639084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6126e816565b83610bef576123b983611e61565b7f3a200000000000000000000000000000000000000000000000000000000000006123e384611e61565b7f203c000000000000000000000000000000000000000000000000000000000000610bb985612772565b612415612dc5565b61241d612dc5565b61242b8686868660016128e9565b9150915094509492505050565b60008061244584846122e1565b9050612457848263ffffffff611a8b16565b90941015949350505050565b600061246e42612abb565b905090565b60008261248257506000611acd565b8282028284828161248f57fe5b0414611aca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190613c6a565b60008315806124d4575082155b156124eb576124e4600083612b12565b9050610f2b565b611e59600161252084612514836125088a8a63ffffffff61247316565b9063ffffffff611ad316565b9063ffffffff612b1216565b9063ffffffff611a8b16565b6000611e5982612514868663ffffffff61247316565b60008184841115612580576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100819190613c49565b505050900390565b600080610100830490506000610100840690506000816001901b8684815181106125ae57fe5b602002602001015116905060008111935050505092915050565b815161010082049060ff8316906001821b908590849081106125e657fe5b60200260200101818151179150818152505050505050565b612606612d8c565b838303801580612638575080600114801561263857508286868151811061262957fe5b60200260200101516000015114155b1561266f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190613c7a565b60006002820486019050600087828151811061268757fe5b6020026020010151600001519050808510156126b3576126a9888884886125fe565b9350505050611e59565b808511156126ca576126a9888360010188886125fe565b8782815181106126d657fe5b60200260200101519350505050611e59565b60008315806126f5575082155b15612705576124e4600083612b12565b6000612717858563ffffffff61247316565b905061276961273660016125206002612514888463ffffffff611ad316565b612746838663ffffffff612b5416565b1015612753576000612756565b60015b60ff16612520838663ffffffff612b1216565b95945050505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b816000815181106127be57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b816001815181106127ff57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015611f13576002810261284a600f8516612b96565b83826029038151811061285957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c935061289b600f8516612b96565b8382602803815181106128aa57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101612831565b6128f1612dc5565b6128f9612dc5565b612901612dc5565b612909612dc5565b60005b8651811015612aac5761291d612dd8565b8a73ffffffffffffffffffffffffffffffffffffffff166347d1b53c8a8a858151811061294657fe5b60200260200101516040518363ffffffff1660e01b815260040161296b929190613ca8565b604080518083038186803b15801561298257600080fd5b505afa158015612996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129ba9190810190613599565b90506129c581612bb8565b156129d05750612aa4565b6129d8612d8c565b6129f58b8a85815181106129e857fe5b6020026020010151612294565b90506129ff612dd8565b612a0d8383606001516122fa565b6040830151516020820151919250600091612a2d9163ffffffff61247316565b9050612a37612dc5565b612a3f612bd2565b90508a15612a5757612a5484602001516122aa565b90505b825115612a8057612a79612a6b8383612bf4565b89519063ffffffff611a8b16565b8852612a9e565b612a9b612a8d83836122e1565b88519063ffffffff611a8b16565b87525b50505050505b60010161290c565b50909890975095505050505050565b600081610b4f63ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743332000000000000000000000084610b57565b6000611aca83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c0d565b6000611aca83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250612c5e565b6000600a821015612bae57506030810160f81b610b52565b5060570160f81b90565b602001516fffffffffffffffffffffffffffffffff161590565b612bda612dc5565b506040805160208101909152670de0b6b3a7640000815290565b6000611aca83670de0b6b3a7640000846000015161252c565b60008183612c48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100819190613c49565b506000838581612c5457fe5b0495945050505050565b60008183612c99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100819190613c49565b50828481612ca357fe5b06949350505050565b6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001612cdc612dd8565b8152602001612ce9612dd8565b81526020016060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600063ffffffff1681525090565b6040518061014001604052806000815260200160008152602001612d49612dd8565b8152602001612d56612dd8565b8152602001612d63612dd8565b815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806080016040528060008152602001612da6612dc5565b8152602001612db3612dc5565b8152602001612dc0612e4e565b905290565b6040518060200160405280600081525090565b604080518082019091526000808252602082015290565b604080516101008101825260008082526020820152908101612e0f612e6e565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b604080516060810182526000808252602082018190529181019190915290565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b8035611acd81613f33565b8051611acd81613f33565b600082601f830112612ebe57600080fd5b8135612ed1612ecc82613da5565b613d7e565b91508181835260208401935060208101905083856020840282011115612ef657600080fd5b60005b83811015612f225781612f0c8882612e97565b8452506020928301929190910190600101612ef9565b5050505092915050565b600082601f830112612f3d57600080fd5b8151612f4b612ecc82613da5565b81815260209384019390925082018360005b83811015612f225781518601612f7388826130f1565b8452506020928301929190910190600101612f5d565b600082601f830112612f9a57600080fd5b8151612fa8612ecc82613da5565b91508181835260208401935060208101905083856040840282011115612fcd57600080fd5b60005b83811015612f225781612fe388826132ca565b84525060209092019160409190910190600101612fd0565b600082601f83011261300c57600080fd5b815161301a612ecc82613da5565b9150818183526020840193506020810190508385602084028201111561303f57600080fd5b60005b83811015612f2257816130558882613398565b8452506020928301929190910190600101613042565b8035611acd81613f47565b8051611acd81613f47565b600082601f83011261309257600080fd5b81516130a0612ecc82613dc6565b915080825260208301602083018583830111156130bc57600080fd5b6130c7838284613ee6565b50505092915050565b8051611acd81613f50565b8051611acd81613f5d565b8051611acd81613f6a565b6000610160828403121561310457600080fd5b61310f610100613d7e565b9050600061311d84846130d0565b825250602061312e84848301613398565b6020830152506040613142848285016131cd565b60408301525060c061315684828501613398565b60608301525060e061316a84828501613398565b60808301525061010061317f84828501612ea2565b60a08301525061012061319484828501613398565b60c08301525061014082015167ffffffffffffffff8111156131b557600080fd5b6131c184828501613081565b60e08301525092915050565b6000608082840312156131df57600080fd5b6131e96080613d7e565b905060006131f78484613076565b8252506020613208848483016130db565b602083015250604061321c848285016130db565b604083015250606061323084828501613398565b60608301525092915050565b60006020828403121561324e57600080fd5b6132586020613d7e565b905060006132668484613398565b82525092915050565b60006060828403121561328157600080fd5b61328b6060613d7e565b9050600061329984846133ae565b82525060206132aa848483016133ae565b60208301525060406132be848285016133a3565b60408301525092915050565b6000604082840312156132dc57600080fd5b6132e66040613d7e565b905060006132f48484612ea2565b825250602061330584848301613398565b60208301525092915050565b60006040828403121561332357600080fd5b61332d6040613d7e565b9050600061333b8484612e97565b82525060206133058484830161338d565b60006040828403121561335e57600080fd5b6133686040613d7e565b905060006133768484613076565b8252506020613305848483018051611acd81613f77565b8035611acd81613f80565b8051611acd81613f80565b8051611acd81613f89565b8051611acd81613f92565b600080604083850312156133cc57600080fd5b825167ffffffffffffffff8111156133e357600080fd5b6133ef85828601612f89565b925050602083015167ffffffffffffffff81111561340c57600080fd5b61341885828601612f2c565b9150509250929050565b60006020828403121561343457600080fd5b815167ffffffffffffffff81111561344b57600080fd5b611e5984828501612ffb565b60006020828403121561346957600080fd5b6000611e598484613076565b60006020828403121561348757600080fd5b6000611e5984846130e6565b6000602082840312156134a557600080fd5b6000611e59848461323c565b6000606082840312156134c357600080fd5b6000611e59848461326f565b600080600080600080600080610140898b0312156134ec57600080fd5b60006134f88b8b613311565b98505060406135098b828c01613311565b975050608061351a8b828c0161338d565b96505060a061352b8b828c0161338d565b95505060c089013567ffffffffffffffff81111561354857600080fd5b6135548b828c01612ead565b94505060e06135658b828c0161338d565b9350506101006135778b828c0161338d565b9250506101206135898b828c0161306b565b9150509295985092959890939650565b6000604082840312156135ab57600080fd5b6000611e59848461334c565b600080604083850312156135ca57600080fd5b60006135d6858561323c565b92505060206134188582860161323c565b6000602082840312156135f957600080fd5b6000611e598484613398565b60006020828403121561361757600080fd5b6000611e5984846133a3565b600061362f8383613666565b505060200190565b6000611aca838361395f565b600061364f8383613a4b565b505060400190565b61366081613eba565b82525050565b61366081613e01565b600061367a82613df4565b6136848185613df8565b935061368f83613dee565b8060005b838110156136bd5781516136a78882613623565b97506136b283613dee565b925050600101613693565b509495945050505050565b60006136d382613df4565b6136dd8185613df8565b9350836020820285016136ef85613dee565b8060005b85811015613729578484038952815161370c8582613637565b945061371783613dee565b60209a909a01999250506001016136f3565b5091979650505050505050565b600061374182613df4565b61374b8185613df8565b935061375683613dee565b8060005b838110156136bd57815161376e8882613643565b975061377983613dee565b92505060010161375a565b61366081613e0c565b61366061379982613e11565b613e5b565b61366061379982613e36565b61366061379982613e5b565b60006137c182613df4565b6137cb8185610b52565b93506137db818560208601613ee6565b9290920192915050565b60006137f082613df4565b6137fa8185613df8565b935061380a818560208601613ee6565b61381381613f12565b9093019392505050565b61366081613ec5565b61366081613ed0565b600061383c601b83613df8565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000613875602183613df8565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006138d4602583613df8565b7f4c697175696461746f7250726f787948656c7065723a206974656d206e6f742081527f666f756e64000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000613933601f83613df8565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b8051600090610160840190613974858261381d565b5060208301516139876020860182613a80565b50604083015161399a6040860182613a01565b5060608301516139ad60c0860182613a80565b5060808301516139c060e0860182613a80565b5060a08301516139d4610100860182613666565b5060c08301516139e8610120860182613a80565b5060e083015184820361014086015261276982826137e5565b80516080830190613a128482613784565b506020820151613a256020850182613826565b506040820151613a386040850182613826565b506060820151610bef6060850182613a80565b80516040830190613a5c8482613666565b506020820151610bef6020850182613a80565b80516040830190613a5c8482613784565b61366081613e5b565b61366081613ea0565b6000613a9e82846137aa565b50602001919050565b6000613ab382866137b6565b9150613abf828561379e565b60028201915061276982846137b6565b6000613adb82896137b6565b9150613ae7828861379e565b600282019150613af782876137b6565b9150613b03828661379e565b600282019150613b1382856137b6565b9150613b1f828461378d565b506001019695505050505050565b6000613b39828b6137b6565b9150613b45828a61379e565b600282019150613b5582896137b6565b9150613b61828861379e565b600282019150613b7182876137b6565b9150613b7d828661379e565b600282019150613b8d82856137b6565b9150613b99828461378d565b5060010198975050505050505050565b60208101611acd8284613666565b60408101613bc58285613666565b610f2b6020830184613657565b60a08101613be08288613666565b613bed6020830187613a80565b613bfa6040830186613a80565b613c076060830185613a80565b8181036080830152613c19818461366f565b979650505050505050565b60408082528101613c358185613736565b90508181036020830152611e5981846136c8565b60208082528101611aca81846137e5565b60208082528101610b4f8161382f565b60208082528101610b4f81613868565b60208082528101610b4f816138c7565b60208082528101610b4f81613926565b60408101611acd8284613a4b565b60608101613cb68285613a4b565b610f2b6040830184613a80565b60208101611acd8284613a80565b60408101613cdf8285613a80565b610f2b6020830184613a80565b60e08101613cfa8289613a80565b613d076020830188613a80565b613d146040830187613a80565b613d216060830186613a6f565b613d2e60a0830185613a80565b613c1960c0830184613a80565b60608101613d498286613a80565b613d566020830185613a80565b611e596040830184613a89565b60408101613d718285613a80565b610f2b6020830184613a89565b60405181810167ffffffffffffffff81118282101715613d9d57600080fd5b604052919050565b600067ffffffffffffffff821115613dbc57600080fd5b5060209081020190565b600067ffffffffffffffff821115613ddd57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b6000610b4f82613e87565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b80610b5281613f1c565b80610b5281613f29565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b6bffffffffffffffffffffffff1690565b6000610b4f82613edb565b6000610b4f82613e5e565b6000610b4f82613e68565b6000610b4f82613e01565b60005b83811015613f01578181015183820152602001613ee9565b83811115610bef5750506000910152565b601f01601f191690565b60098110613f2657fe5b50565b60028110613f2657fe5b613f3c81613e01565b8114613f2657600080fd5b613f3c81613e0c565b60098110613f2657600080fd5b60028110613f2657600080fd5b60038110613f2657600080fd5b613f3c81613e72565b613f3c81613e5b565b613f3c81613ea0565b613f3c81613ea956fea365627a7a723158206cf45e3eacb9c9985092b0e5383d3ef9f8887e47b3e8ba34465c91fd5d31e9886c6578706572696d656e74616cf564736f6c63430005100040",
|
|
164
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80634e2d2fbf14610030575b600080fd5b61004361003e3660046134cf565b610045565b005b60005460ff1661008a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190613c8a565b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610102868614157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f6f7765644d61726b657420657175616c732068656c644d61726b6574000000008989610a1d565b6000546040517f47d1b53c000000000000000000000000000000000000000000000000000000008152610203916101ba9161010090910473ffffffffffffffffffffffffffffffffffffffff16906347d1b53c90610166908c908c90600401613ca8565b604080518083038186803b15801561017d57600080fd5b505afa158015610191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101b59190810190613599565b610b28565b157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f6f776564206d61726b65742063616e6e6f7420626520706f736974697665000089610b57565b6000546040517f47d1b53c0000000000000000000000000000000000000000000000000000000081526102af916102679161010090910473ffffffffffffffffffffffffffffffffffffffff16906347d1b53c90610166908c908b90600401613ca8565b7f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f68656c64206d61726b65742063616e6e6f74206265206e65676174697665000088610b57565b610303838463ffffffff16147f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f657870697279206f766572666c6f77000000000000000000000000000000000086610b57565b61030b612cac565b600054610100900473ffffffffffffffffffffffffffffffffffffffff16808252602082018a905260408083018a9052517f98d4611b0000000000000000000000000000000000000000000000000000000081526398d4611b90610373908b90600401613c9a565b60006040518083038186803b15801561038b57600080fd5b505afa15801561039f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103c79190810190613422565b608082015280516040517f98d4611b000000000000000000000000000000000000000000000000000000008152610483919073ffffffffffffffffffffffffffffffffffffffff8216906398d4611b90610425908e90600401613c9a565b60006040518083038186803b15801561043d57600080fd5b505afa158015610451573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104799190810190613422565b8360800151610bf5565b6060820152836104945760006104ae565b60025473ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff1660a082015263ffffffff841660c08201526104dd612d27565b6104e882888a610f32565b90506104f682888a896112e0565b6104ff8161198e565b805161054e9015157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f6e6f7468696e6720746f206c6971756964617465000000000000000000000000611a41565b60208101516040820151511561057b5760408201516020015161057890829063ffffffff611a8b16565b90505b606080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fd15c8918660200151600001518760200151602001517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88600001518e6040518663ffffffff1660e01b8152600401610615959493929190613bd2565b60006040518083038186803b15801561062d57600080fd5b505afa158015610641573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066991908101906133b9565b915091508060008151811061067a57fe5b6020026020010151604001516060015184602001511061075e5760006106c9826000815181106106a657fe5b602002602001015160400151606001518660200151611ad390919063ffffffff16565b905060008c905086602001516000015173ffffffffffffffffffffffffffffffffffffffff167fd830e4105186a902ac3d9e3080ccf4c3afa7191753281b0abdb147a603b6d4dd8860200151602001518e8960200151604051806040016040528060011515815260200188815250868c6000015160405161074f96959493929190613cec565b60405180910390a2505061095d565b6107c886157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f746f74616c536f6c696448656c6457656920697320746f6f20736d616c6c000086856000815181106107b357fe5b60200260200101516040015160600151610a1d565b60006107fd8560200151836000815181106107df57fe5b60200260200101516040015160600151611ad390919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a6e58f5876020015160000151886020015160200151878c8f6040518663ffffffff1660e01b8152600401610872959493929190613bd2565b60006040518083038186803b15801561088a57600080fd5b505afa15801561089e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108c691908101906133b9565b809350819450505060008c905086602001516000015173ffffffffffffffffffffffffffffffffffffffff167fd830e4105186a902ac3d9e3080ccf4c3afa7191753281b0abdb147a603b6d4dd8860200151602001518e8960200151604051806040016040528060001515815260200188815250868c6000015160405161095296959493929190613cec565b60405180910390a250505b6109678583611b15565b855190925073ffffffffffffffffffffffffffffffffffffffff1663a67a6a458361099488888387611c40565b6040518363ffffffff1660e01b81526004016109b1929190613c24565b600060405180830381600087803b1580156109cb57600080fd5b505af11580156109df573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055505050505050505050505050505050565b84610b2157610a2b84611e61565b7f3a20000000000000000000000000000000000000000000000000000000000000610a5585611e61565b7f203c000000000000000000000000000000000000000000000000000000000000610a7f86611f1b565b7f2c20000000000000000000000000000000000000000000000000000000000000610aa987611f1b565b604051610ae197969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001613b2d565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261008191600401613c49565b5050505050565b80516000908015610b4f5750600082602001516fffffffffffffffffffffffffffffffff16115b90505b919050565b83610bef57610b6583611e61565b7f3a20000000000000000000000000000000000000000000000000000000000000610b8f84611e61565b7f203c000000000000000000000000000000000000000000000000000000000000610bb985611f1b565b604051610ae19594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001613acf565b50505050565b606080610c7e8573ffffffffffffffffffffffffffffffffffffffff1663295c39a56040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4157600080fd5b505afa158015610c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7991908101906135e7565b61202a565b90506000610c8d858383612064565b9050610c9a848383612064565b90506000809050606082604051908082528060200260200182016040528015610cdd57816020015b610cca612d8c565b815260200190600190039081610cc25790505b50905060005b8451811015610f24576000858281518110610cfa57fe5b602002602001015190505b8015610f0d576000610d16826120c7565b90506000610d248483612280565b905060405180608001604052808281526020018d73ffffffffffffffffffffffffffffffffffffffff16631a7777bb846040518263ffffffff1660e01b8152600401610d709190613cc3565b60206040518083038186803b158015610d8857600080fd5b505afa158015610d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dc09190810190613493565b81526020018d73ffffffffffffffffffffffffffffffffffffffff16638928378e846040518263ffffffff1660e01b8152600401610dfe9190613cc3565b60206040518083038186803b158015610e1657600080fd5b505afa158015610e2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e4e9190810190613493565b81526020018d73ffffffffffffffffffffffffffffffffffffffff166356ea84b2846040518263ffffffff1660e01b8152600401610e8c9190613cc3565b60606040518083038186803b158015610ea457600080fd5b505afa158015610eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610edc91908101906134b1565b90528551600188019787918110610eef57fe5b6020026020010181905250610f04838361228b565b92505050610d05565b84841415610f1b5750610f24565b50600101610ce3565b5093505050505b9392505050565b610f3a612d27565b610f42612d8c565b610f50856060015185612294565b9050610f5a612d8c565b610f68866060015185612294565b60408084015151908201515160c0890151929350909160009063ffffffff161561104d57610f94612dc5565b60a08a015160c08b01516040517fb139654200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163b139654291610ff3918d918d91600401613d3b565b604080518083038186803b15801561100a57600080fd5b505afa15801561101e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061104291908101906135b7565b519250611109915050565b88516040517fd24c48bc0000000000000000000000000000000000000000000000000000000081526111069184916111019173ffffffffffffffffffffffffffffffffffffffff169063d24c48bc906110ac908e908e90600401613cd1565b60206040518083038186803b1580156110c457600080fd5b505afa1580156110d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110fc9190810190613493565b6122aa565b6122e1565b90505b60405180610140016040528060008152602001600081526020016111c28b6000015173ffffffffffffffffffffffffffffffffffffffff166347d1b53c8d602001518d6040518363ffffffff1660e01b8152600401611169929190613ca8565b604080518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111b89190810190613599565b88606001516122fa565b815260200161120d8b6000015173ffffffffffffffffffffffffffffffffffffffff166347d1b53c8d604001518d6040518363ffffffff1660e01b8152600401611169929190613ca8565b81526020016112b18b6000015173ffffffffffffffffffffffffffffffffffffffff166347d1b53c8d604001518c6040518363ffffffff1660e01b8152600401611258929190613ca8565b604080518083038186803b15801561126f57600080fd5b505afa158015611283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112a79190810190613599565b87606001516122fa565b815260200189815260200188815260200184815260200183815260200182815250955050505050509392505050565b6020840151516114039073ffffffffffffffffffffffffffffffffffffffff163314806113b3575084516020860151516040517f3a031bf000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691633a031bf091611363913390600401613bb7565b60206040518083038186803b15801561137b57600080fd5b505afa15801561138f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113b39190810190613457565b7f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f53656e646572206e6f74206f70657261746f72000000000000000000000000008760200151600001516123ab565b61150583856000015173ffffffffffffffffffffffffffffffffffffffff16638fae3be18460008151811061143457fe5b60200260200101516040518263ffffffff1660e01b81526004016114589190613ba9565b60206040518083038186803b15801561147057600080fd5b505afa158015611484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114a891908101906135e7565b147f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f302d696e64657820746f6b656e207061746820696e636f727265637400000000846000815181106114f857fe5b60200260200101516123ab565b61160082856000015173ffffffffffffffffffffffffffffffffffffffff16638fae3be18460018651038151811061153957fe5b60200260200101516040518263ffffffff1660e01b815260040161155d9190613ba9565b60206040518083038186803b15801561157557600080fd5b505afa158015611589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115ad91908101906135e7565b147f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f6c6173742d696e64657820746f6b656e207061746820696e636f727265637400846001865103815181106114f857fe5b60c084015163ffffffff1661183257611617612dc5565b61161f612dc5565b61163b866000015187606001518860400151896080015161240d565b8151919350915061168f9015157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f4c6971756964206163636f756e74206e6f20737570706c790000000000000000611a41565b61182b600187516040808a015190517fe51bfcb400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163e51bfcb4916116ec91600401613c9a565b60206040518083038186803b15801561170457600080fd5b505afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061173c9190810190613475565b600281111561174757fe5b14806117e457506117e283600001518360000151896000015173ffffffffffffffffffffffffffffffffffffffff16634f3c15426040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a557600080fd5b505afa1580156117b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117dd9190810190613493565b612438565b155b7f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f4c6971756964206163636f756e74206e6f74206c6971756964617461626c6500611a41565b5050610bef565b60008460a0015173ffffffffffffffffffffffffffffffffffffffff16631be7dd838660400151856040518363ffffffff1660e01b8152600401611877929190613ca8565b60206040518083038186803b15801561188f57600080fd5b505afa1580156118a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118c79190810190613605565b63ffffffff1690506119328560c0015163ffffffff1682147f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f657870697279206d69736d617463680000000000000000000000000000000000848960c0015163ffffffff16610a1d565b610b2161193d612463565b63ffffffff168211157f4c697175696461746f7250726f7879563157697468416d6d00000000000000007f426f72726f77206e6f742079657420657870697265640000000000000000000084610b57565b60006119af8260600151602001518360e0015161247390919063ffffffff16565b905060006119d383608001516020015184610120015161247390919063ffffffff16565b9050808211611a0d57606083015160209081018051918501919091525160e0840151610120850151611a069291906124c7565b8352611a3c565b611a298360800151602001518461012001518560e0015161252c565b6020808501919091526080840151015183525b505050565b82611a3c57611a4f82611e61565b7f3a20000000000000000000000000000000000000000000000000000000000000611a7983611e61565b604051602001610ae193929190613aa7565b600082820183811015611aca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190613c5a565b90505b92915050565b6000611aca83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612542565b6060808251600101604051908082528060200260200182016040528015611b5657816020015b611b43612dd8565b815260200190600190039081611b3b5790505b50905060005b8351811015611b9857838181518110611b7157fe5b6020026020010151828281518110611b8557fe5b6020908102919091010152600101611b5c565b5083602001516000015173ffffffffffffffffffffffffffffffffffffffff1681600081518110611bc557fe5b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16148015611c13575083602001516020015181600081518110611c0557fe5b602002602001015160200151145b611c1957fe5b836040015181600183510381518110611c2e57fe5b60209081029190910101529392505050565b6060808251600101604051908082528060200260200182016040528015611c8157816020015b611c6e612def565b815260200190600190039081611c665790505b5060c087015190915063ffffffff1615611d65576040805161010081018252600581526000602080830182905283516080810185526001815292938401929190820190815260200160008152602001886000015181525081526020018660c0015181526020018660a0015181526020018760a0015173ffffffffffffffffffffffffffffffffffffffff168152602001600186510381526020018660c001518860c00151604051602001611d36929190613d63565b60405160208183030381529060405281525081600081518110611d5557fe5b6020026020010181905250611e13565b60408051610100810182526006815260006020808301829052835160808101855260018152929384019291908201908152600060208083018290528a5160409384015292845260c08a01518484015260a0808b0151858401526060850182905289517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01608086015282518281529384019092529201528251839190611e0757fe5b60200260200101819052505b60005b8351811015611e5557838181518110611e2b57fe5b6020026020010151828260010181518110611e4257fe5b6020908102919091010152600101611e16565b5090505b949350505050565b60608082604051602001611e759190613a92565b60408051601f19818403018152919052905060205b8015611f005781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110611ec357fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615611efb5760010181529050610b52565b611e8a565b5060408051600080825260208201909252905b509392505050565b606081611f5c575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610b52565b8160005b8115611f7457600101600a82049150611f60565b6060816040519080825280601f01601f191660200182016040528015611fa1576020820181803883390190505b508593509050815b8015612021577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b828281518110611fe757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611fa9565b50949350505050565b6060600161010083040160405190808252806020026020018201604052801561205d578160200160208202803883390190505b5092915050565b6000805b84518110156120be5761208e8486838151811061208157fe5b6020026020010151612588565b6120b6576120af848683815181106120a257fe5b60200260200101516125c8565b6001830192505b600101612068565b50909392505050565b600060ff6fffffffffffffffffffffffffffffffff83161561210a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8001612112565b608083901c92505b67ffffffffffffffff831615612149577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001612151565b604083901c92505b63ffffffff83161561216657601f190161216e565b602083901c92505b61ffff83161561219f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016121a7565b601083901c92505b60ff8316156121d7577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8016121df565b600883901c92505b600f83161561220f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01612217565b600483901c92505b6003831615612247577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161224f565b600283901c92505b6001831615610b4f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b610100919091020190565b6001901b900390565b61229c612d8c565b611aca8360008551856125fe565b6122b2612dc5565b6040805160208101909152825181906122d990670de0b6b3a764000063ffffffff611a8b16565b905292915050565b6000611aca838360000151670de0b6b3a764000061252c565b612302612dd8565b602083015183516fffffffffffffffffffffffffffffffff909116901561236e576040805180820190915260018152602084810151908201906123639084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6126e816565b815250915050611acd565b6040805180820190915260008152835160208201906123639084906bffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6126e816565b83610bef576123b983611e61565b7f3a200000000000000000000000000000000000000000000000000000000000006123e384611e61565b7f203c000000000000000000000000000000000000000000000000000000000000610bb985612772565b612415612dc5565b61241d612dc5565b61242b8686868660016128e9565b9150915094509492505050565b60008061244584846122e1565b9050612457848263ffffffff611a8b16565b90941015949350505050565b600061246e42612abb565b905090565b60008261248257506000611acd565b8282028284828161248f57fe5b0414611aca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190613c6a565b60008315806124d4575082155b156124eb576124e4600083612b12565b9050610f2b565b611e59600161252084612514836125088a8a63ffffffff61247316565b9063ffffffff611ad316565b9063ffffffff612b1216565b9063ffffffff611a8b16565b6000611e5982612514868663ffffffff61247316565b60008184841115612580576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100819190613c49565b505050900390565b600080610100830490506000610100840690506000816001901b8684815181106125ae57fe5b602002602001015116905060008111935050505092915050565b815161010082049060ff8316906001821b908590849081106125e657fe5b60200260200101818151179150818152505050505050565b612606612d8c565b838303801580612638575080600114801561263857508286868151811061262957fe5b60200260200101516000015114155b1561266f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008190613c7a565b60006002820486019050600087828151811061268757fe5b6020026020010151600001519050808510156126b3576126a9888884886125fe565b9350505050611e59565b808511156126ca576126a9888360010188886125fe565b8782815181106126d657fe5b60200260200101519350505050611e59565b60008315806126f5575082155b15612705576124e4600083612b12565b6000612717858563ffffffff61247316565b905061276961273660016125206002612514888463ffffffff611ad316565b612746838663ffffffff612b5416565b1015612753576000612756565b60015b60ff16612520838663ffffffff612b1216565b95945050505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b816000815181106127be57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b816001815181106127ff57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015611f13576002810261284a600f8516612b96565b83826029038151811061285957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c935061289b600f8516612b96565b8382602803815181106128aa57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101612831565b6128f1612dc5565b6128f9612dc5565b612901612dc5565b612909612dc5565b60005b8651811015612aac5761291d612dd8565b8a73ffffffffffffffffffffffffffffffffffffffff166347d1b53c8a8a858151811061294657fe5b60200260200101516040518363ffffffff1660e01b815260040161296b929190613ca8565b604080518083038186803b15801561298257600080fd5b505afa158015612996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129ba9190810190613599565b90506129c581612bb8565b156129d05750612aa4565b6129d8612d8c565b6129f58b8a85815181106129e857fe5b6020026020010151612294565b90506129ff612dd8565b612a0d8383606001516122fa565b6040830151516020820151919250600091612a2d9163ffffffff61247316565b9050612a37612dc5565b612a3f612bd2565b90508a15612a5757612a5484602001516122aa565b90505b825115612a8057612a79612a6b8383612bf4565b89519063ffffffff611a8b16565b8852612a9e565b612a9b612a8d83836122e1565b88519063ffffffff611a8b16565b87525b50505050505b60010161290c565b50909890975095505050505050565b600081610b4f63ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743332000000000000000000000084610b57565b6000611aca83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c0d565b6000611aca83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250612c5e565b6000600a821015612bae57506030810160f81b610b52565b5060570160f81b90565b602001516fffffffffffffffffffffffffffffffff161590565b612bda612dc5565b506040805160208101909152670de0b6b3a7640000815290565b6000611aca83670de0b6b3a7640000846000015161252c565b60008183612c48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100819190613c49565b506000838581612c5457fe5b0495945050505050565b60008183612c99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100819190613c49565b50828481612ca357fe5b06949350505050565b6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001612cdc612dd8565b8152602001612ce9612dd8565b81526020016060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600063ffffffff1681525090565b6040518061014001604052806000815260200160008152602001612d49612dd8565b8152602001612d56612dd8565b8152602001612d63612dd8565b815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806080016040528060008152602001612da6612dc5565b8152602001612db3612dc5565b8152602001612dc0612e4e565b905290565b6040518060200160405280600081525090565b604080518082019091526000808252602082015290565b604080516101008101825260008082526020820152908101612e0f612e6e565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b604080516060810182526000808252602082018190529181019190915290565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b8035611acd81613f33565b8051611acd81613f33565b600082601f830112612ebe57600080fd5b8135612ed1612ecc82613da5565b613d7e565b91508181835260208401935060208101905083856020840282011115612ef657600080fd5b60005b83811015612f225781612f0c8882612e97565b8452506020928301929190910190600101612ef9565b5050505092915050565b600082601f830112612f3d57600080fd5b8151612f4b612ecc82613da5565b81815260209384019390925082018360005b83811015612f225781518601612f7388826130f1565b8452506020928301929190910190600101612f5d565b600082601f830112612f9a57600080fd5b8151612fa8612ecc82613da5565b91508181835260208401935060208101905083856040840282011115612fcd57600080fd5b60005b83811015612f225781612fe388826132ca565b84525060209092019160409190910190600101612fd0565b600082601f83011261300c57600080fd5b815161301a612ecc82613da5565b9150818183526020840193506020810190508385602084028201111561303f57600080fd5b60005b83811015612f2257816130558882613398565b8452506020928301929190910190600101613042565b8035611acd81613f47565b8051611acd81613f47565b600082601f83011261309257600080fd5b81516130a0612ecc82613dc6565b915080825260208301602083018583830111156130bc57600080fd5b6130c7838284613ee6565b50505092915050565b8051611acd81613f50565b8051611acd81613f5d565b8051611acd81613f6a565b6000610160828403121561310457600080fd5b61310f610100613d7e565b9050600061311d84846130d0565b825250602061312e84848301613398565b6020830152506040613142848285016131cd565b60408301525060c061315684828501613398565b60608301525060e061316a84828501613398565b60808301525061010061317f84828501612ea2565b60a08301525061012061319484828501613398565b60c08301525061014082015167ffffffffffffffff8111156131b557600080fd5b6131c184828501613081565b60e08301525092915050565b6000608082840312156131df57600080fd5b6131e96080613d7e565b905060006131f78484613076565b8252506020613208848483016130db565b602083015250604061321c848285016130db565b604083015250606061323084828501613398565b60608301525092915050565b60006020828403121561324e57600080fd5b6132586020613d7e565b905060006132668484613398565b82525092915050565b60006060828403121561328157600080fd5b61328b6060613d7e565b9050600061329984846133ae565b82525060206132aa848483016133ae565b60208301525060406132be848285016133a3565b60408301525092915050565b6000604082840312156132dc57600080fd5b6132e66040613d7e565b905060006132f48484612ea2565b825250602061330584848301613398565b60208301525092915050565b60006040828403121561332357600080fd5b61332d6040613d7e565b9050600061333b8484612e97565b82525060206133058484830161338d565b60006040828403121561335e57600080fd5b6133686040613d7e565b905060006133768484613076565b8252506020613305848483018051611acd81613f77565b8035611acd81613f80565b8051611acd81613f80565b8051611acd81613f89565b8051611acd81613f92565b600080604083850312156133cc57600080fd5b825167ffffffffffffffff8111156133e357600080fd5b6133ef85828601612f89565b925050602083015167ffffffffffffffff81111561340c57600080fd5b61341885828601612f2c565b9150509250929050565b60006020828403121561343457600080fd5b815167ffffffffffffffff81111561344b57600080fd5b611e5984828501612ffb565b60006020828403121561346957600080fd5b6000611e598484613076565b60006020828403121561348757600080fd5b6000611e5984846130e6565b6000602082840312156134a557600080fd5b6000611e59848461323c565b6000606082840312156134c357600080fd5b6000611e59848461326f565b600080600080600080600080610140898b0312156134ec57600080fd5b60006134f88b8b613311565b98505060406135098b828c01613311565b975050608061351a8b828c0161338d565b96505060a061352b8b828c0161338d565b95505060c089013567ffffffffffffffff81111561354857600080fd5b6135548b828c01612ead565b94505060e06135658b828c0161338d565b9350506101006135778b828c0161338d565b9250506101206135898b828c0161306b565b9150509295985092959890939650565b6000604082840312156135ab57600080fd5b6000611e59848461334c565b600080604083850312156135ca57600080fd5b60006135d6858561323c565b92505060206134188582860161323c565b6000602082840312156135f957600080fd5b6000611e598484613398565b60006020828403121561361757600080fd5b6000611e5984846133a3565b600061362f8383613666565b505060200190565b6000611aca838361395f565b600061364f8383613a4b565b505060400190565b61366081613eba565b82525050565b61366081613e01565b600061367a82613df4565b6136848185613df8565b935061368f83613dee565b8060005b838110156136bd5781516136a78882613623565b97506136b283613dee565b925050600101613693565b509495945050505050565b60006136d382613df4565b6136dd8185613df8565b9350836020820285016136ef85613dee565b8060005b85811015613729578484038952815161370c8582613637565b945061371783613dee565b60209a909a01999250506001016136f3565b5091979650505050505050565b600061374182613df4565b61374b8185613df8565b935061375683613dee565b8060005b838110156136bd57815161376e8882613643565b975061377983613dee565b92505060010161375a565b61366081613e0c565b61366061379982613e11565b613e5b565b61366061379982613e36565b61366061379982613e5b565b60006137c182613df4565b6137cb8185610b52565b93506137db818560208601613ee6565b9290920192915050565b60006137f082613df4565b6137fa8185613df8565b935061380a818560208601613ee6565b61381381613f12565b9093019392505050565b61366081613ec5565b61366081613ed0565b600061383c601b83613df8565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000613875602183613df8565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006138d4602583613df8565b7f4c697175696461746f7250726f787948656c7065723a206974656d206e6f742081527f666f756e64000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000613933601f83613df8565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b8051600090610160840190613974858261381d565b5060208301516139876020860182613a80565b50604083015161399a6040860182613a01565b5060608301516139ad60c0860182613a80565b5060808301516139c060e0860182613a80565b5060a08301516139d4610100860182613666565b5060c08301516139e8610120860182613a80565b5060e083015184820361014086015261276982826137e5565b80516080830190613a128482613784565b506020820151613a256020850182613826565b506040820151613a386040850182613826565b506060820151610bef6060850182613a80565b80516040830190613a5c8482613666565b506020820151610bef6020850182613a80565b80516040830190613a5c8482613784565b61366081613e5b565b61366081613ea0565b6000613a9e82846137aa565b50602001919050565b6000613ab382866137b6565b9150613abf828561379e565b60028201915061276982846137b6565b6000613adb82896137b6565b9150613ae7828861379e565b600282019150613af782876137b6565b9150613b03828661379e565b600282019150613b1382856137b6565b9150613b1f828461378d565b506001019695505050505050565b6000613b39828b6137b6565b9150613b45828a61379e565b600282019150613b5582896137b6565b9150613b61828861379e565b600282019150613b7182876137b6565b9150613b7d828661379e565b600282019150613b8d82856137b6565b9150613b99828461378d565b5060010198975050505050505050565b60208101611acd8284613666565b60408101613bc58285613666565b610f2b6020830184613657565b60a08101613be08288613666565b613bed6020830187613a80565b613bfa6040830186613a80565b613c076060830185613a80565b8181036080830152613c19818461366f565b979650505050505050565b60408082528101613c358185613736565b90508181036020830152611e5981846136c8565b60208082528101611aca81846137e5565b60208082528101610b4f8161382f565b60208082528101610b4f81613868565b60208082528101610b4f816138c7565b60208082528101610b4f81613926565b60408101611acd8284613a4b565b60608101613cb68285613a4b565b610f2b6040830184613a80565b60208101611acd8284613a80565b60408101613cdf8285613a80565b610f2b6020830184613a80565b60e08101613cfa8289613a80565b613d076020830188613a80565b613d146040830187613a80565b613d216060830186613a6f565b613d2e60a0830185613a80565b613c1960c0830184613a80565b60608101613d498286613a80565b613d566020830185613a80565b611e596040830184613a89565b60408101613d718285613a80565b610f2b6020830184613a89565b60405181810167ffffffffffffffff81118282101715613d9d57600080fd5b604052919050565b600067ffffffffffffffff821115613dbc57600080fd5b5060209081020190565b600067ffffffffffffffff821115613ddd57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b6000610b4f82613e87565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b80610b5281613f1c565b80610b5281613f29565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b6bffffffffffffffffffffffff1690565b6000610b4f82613edb565b6000610b4f82613e5e565b6000610b4f82613e68565b6000610b4f82613e01565b60005b83811015613f01578181015183820152602001613ee9565b83811115610bef5750506000910152565b601f01601f191690565b60098110613f2657fe5b50565b60028110613f2657fe5b613f3c81613e01565b8114613f2657600080fd5b613f3c81613e0c565b60098110613f2657600080fd5b60028110613f2657600080fd5b60038110613f2657600080fd5b613f3c81613e72565b613f3c81613e5b565b613f3c81613ea0565b613f3c81613ea956fea365627a7a723158206cf45e3eacb9c9985092b0e5383d3ef9f8887e47b3e8ba34465c91fd5d31e9886c6578706572696d656e74616cf564736f6c63430005100040",
|
|
165
165
|
"sourceMap": "1810:19803:30:-;;;4395:317;8:9:-1;5:2;;;30:1;27;20:12;5:2;4395:317:30;;;;;;;;;;;;;;;;;;;;;1421:11:129;:18;;-1:-1:-1;;;;;4540:49:30;;;1421:18:129;4540:49:30;-1:-1:-1;;;;;;;;1421:18:129;;;1435:4;1421:18;;;4540:49:30;;;;;;;;4599:61;;;;;-1:-1:-1;;;;;;4599:61:30;;;;;;4670:12;:35;;;;;;;;;;;1810:19803;;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:535;;;;295:2;283:9;274:7;270:23;266:32;263:2;;;311:1;308;301:12;263:2;346:1;363:64;419:7;399:9;363:64;;;353:74;;325:108;464:2;482:64;538:7;529:6;518:9;514:22;482:64;;;472:74;;443:109;583:2;601:64;657:7;648:6;637:9;633:22;601:64;;;591:74;;562:109;257:424;;;;;;688:91;;-1:-1;;;;;848:54;;750:24;831:76;914:117;983:24;1001:5;983:24;;;976:5;973:35;963:2;;1022:1;1019;1012:12;963:2;957:74;;;1810:19803:30;;;;;;",
|
|
166
166
|
"deployedSourceMap": "1810:19803:30:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1810:19803:30;;;;;;;;;;;;;;;;;;;6606:5432;;;;;;;;;:::i;:::-;;;1934:11:129;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;2070:5;2056:19;;;;;;6948:170:30;6974:24;;;;7012:4;6948:170;6974:10;6988;6948:12;:170::i;:::-;7156:15;;:56;;;;;7129:194;;7156:69;;:15;;;;;;;:29;;:56;;7186:13;;7201:10;;7156:56;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7156:56:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7156:56:30;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7156:56:30;;;;;;;;;:67;:69::i;:::-;7155:70;7239:4;7129:194;7303:10;7129:12;:194::i;:::-;7360:15;;:56;;;;;7334:193;;7360:69;;:15;;;;;;;:29;;:56;;7390:13;;7405:10;;7360:56;;;;:69;7443:4;7334:193;7507:10;7334:12;:193::i;:::-;7538:129;7582:6;7571;7564:24;;;7602:4;7538:129;7651:6;7538:12;:129::i;:::-;7746:26;;:::i;:::-;7809:15;;;;;;;7782:42;;;7834:22;;;:37;;;7881:23;;;;:39;;;7956:76;;;;:61;;:76;;7881:39;;7956:76;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7956:76:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7956:76:30;;;;;;39:16:-1;36:1;17:17;2:54;101:4;7956:76:30;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;7956:76:30;;;;;;;;;7930:23;;;:102;8090:24;;8128:75;;;;;8062:188;;8090:24;8128:61;;;;;;:75;;8190:12;;8128:75;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8128:75:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8128:75:30;;;;;;39:16:-1;36:1;17:17;2:54;101:4;8128:75:30;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;8128:75:30;;;;;;;;;8217:9;:23;;;8062:14;:188::i;:::-;8042:17;;;:208;8284:10;:46;;8327:1;8284:46;;;8297:12;;;;8284:46;8260:70;;:21;;;:70;8340:33;;;:16;;;:33;8384:40;;:::i;:::-;8427:96;8456:9;8479:10;8503;8427:15;:96::i;:::-;8384:139;;8614:121;8645:9;8668:10;8692;8716:9;8614:17;:121::i;:::-;8788:36;8818:5;8788:29;:36::i;:::-;8908:17;;8882:112;;8908:22;;8944:4;8882:112;:12;:112::i;:::-;9030:31;;;;9075:18;;;;:23;9071:485;;;9520:18;;;;:24;;;9498:47;;:17;;:47;:21;:47;:::i;:::-;9478:67;;9071:485;9580:30;9624:35;9672:12;;;;;;;;;;;:49;;;9735:9;:22;;;:28;;;9777:9;:22;;;:29;;;9825:3;9858:5;:17;;;9962:9;9672:309;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9672:309:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9672:309:30;;;;;;39:16:-1;36:1;17:17;2:54;101:4;9672:309:30;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;9672:309:30;;;;;;;;;9566:415;;;;10031:7;10039:1;10031:10;;;;;;;;;;;;;;:17;;;:23;;;9996:5;:31;;;:58;9992:1757;;10070:11;10084:60;10120:7;10128:1;10120:10;;;;;;;;;;;;;;:17;;;:23;;;10084:5;:31;;;:35;;:60;;;;:::i;:::-;10070:74;;10158:16;10177:10;10158:29;;10289:9;:22;;;:28;;;10252:308;;;10335:9;:22;;;:29;;;10382:10;10410:5;:31;;;10459:23;;;;;;;;10469:4;10459:23;;;;;;10475:6;10459:23;;;10500:11;10529:5;:17;;;10252:308;;;;;;;;;;;;;;;;;;;;9992:1757;;;;;10591:221;10622:28;10621:29;10668:4;10591:221;10740:17;10775:7;10783:1;10775:10;;;;;;;;;;;;;;:17;;;:23;;;10591:12;:221::i;:::-;10943:11;10957:60;10985:5;:31;;;10957:7;10965:1;10957:10;;;;;;;;;;;;;;:17;;;:23;;;:27;;:60;;;;:::i;:::-;10943:74;;11053:12;;;;;;;;;;;:49;;;11120:9;:22;;;:28;;;11166:9;:22;;;:29;;;11213:17;11260:19;11297:9;11053:267;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11053:267:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11053:267:30;;;;;;39:16:-1;36:1;17:17;2:54;101:4;11053:267:30;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;11053:267:30;;;;;;;;;11031:289;;;;;;;;11335:16;11354:10;11335:29;;11466:9;:22;;;:28;;;11429:309;;;11512:9;:22;;;:29;;;11559:10;11587:5;:31;;;11636:24;;;;;;;;11646:5;11636:24;;;;;;11653:6;11636:24;;;11678:11;11707:5;:17;;;11429:309;;;;;;;;;;;;;;;;;;;;9992:1757;;;11770:43;11793:9;11804:8;11770:22;:43::i;:::-;11860:24;;11759:54;;-1:-1:-1;11860:32:30;;;11759:54;11928:58;11860:9;11961:5;11759:54;11978:7;11928:21;:58::i;:::-;11860:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11860:171:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2230:11:129;:18;;;;2244:4;2230:18;;;-1:-1:-1;;;;;;;;;;;;;;;6606:5432:30:o;2293:663:77:-;2479:4;2474:476;;2593:24;2612:4;2593:18;:24::i;:::-;2643:5;2674:26;2693:6;2674:18;:26::i;:::-;2726:6;2758:19;2768:8;2758:9;:19::i;:::-;2803:5;2834:19;2844:8;2834:9;:19::i;:::-;2551:356;;;;;;;;;;;2879:6;;2551:356;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2551:356:77;;;;2499:440;;;;;;;;;2474:476;2293:663;;;;;:::o;3566:150:82:-;3688:6;;3661:4;;3688:21;;;;;3708:1;3698;:7;;;:11;;;3688:21;3681:28;;3566:150;;;;:::o;1726:561:77:-;1886:4;1881:400;;2000:24;2019:4;2000:18;:24::i;:::-;2050:5;2081:26;2100:6;2081:18;:26::i;:::-;2133:6;2165:19;2175:8;2165:9;:19::i;:::-;1958:280;;;;;;;;;2210:6;;1958:280;;;;1881:400;1726:561;;;;:::o;3342:1552:5:-;3514:19;3545:27;3575:50;3594:14;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3594:30:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3594:30:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3594:30:5;;;;;;;;;3575:18;:50::i;:::-;3545:80;-1:-1:-1;3635:18:5;3683:63;3703:12;3545:80;3635:18;3683:19;:63::i;:::-;3667:79;;3772:64;3792:13;3807;3822;3772:19;:64::i;:::-;3756:80;;3944:12;3959:1;3944:16;;3970:31;4021:13;4004:31;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;3970:65:5;-1:-1:-1;4050:6:5;4045:814;4066:13;:20;4062:1;:24;4045:814;;;4107:11;4121:13;4135:1;4121:16;;;;;;;;;;;;;;4107:30;;4151:617;4158:11;;4151:617;;4189:15;4207:35;4235:6;4207:27;:35::i;:::-;4189:53;;4260:13;4276:38;4300:1;4303:10;4276:23;:38::i;:::-;4260:54;;4358:297;;;;;;;;4401:8;4358:297;;;;4446:14;:37;;;4484:8;4446:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4446:47:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4446:47:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4446:47:5;;;;;;;;;4358:297;;;;4522:14;:29;;;4552:8;4522:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4522:39:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4522:39:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4522:39:5;;;;;;;;;4358:297;;;;4590:14;:36;;;4627:8;4590:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4590:46:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4590:46:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4590:46:5;;;;;;;;;4358:297;;4333:22;;4345:9;;;;4333:11;;:22;;;;;;;;;;;:322;;;;4720:33;4734:6;4742:10;4720:13;:33::i;:::-;4711:42;;4151:617;;;;;4796:13;4785:7;:24;4781:68;;;4829:5;;;4781:68;-1:-1:-1;4088:3:5;;4045:814;;;-1:-1:-1;4876:11:5;-1:-1:-1;;;;3342:1552:5;;;;;;:::o;16885:1911:30:-;17042:34;;:::i;:::-;17092:32;;:::i;:::-;17127:43;17140:9;:17;;;17159:10;17127:12;:43::i;:::-;17092:78;;17180:32;;:::i;:::-;17215:43;17228:9;:17;;;17247:10;17215:12;:43::i;:::-;17288:20;;;;;:26;17344:20;;;;:26;17415:16;;;;17180:78;;-1:-1:-1;17288:26:30;;17268:17;;17415:20;;;17411:501;;17454:36;;:::i;:::-;17494:21;;;;17613:16;;;;17494:149;;;;;:45;;;;;;;:149;;17557:10;;17585;;17494:149;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17494:149:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17494:149:30;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17494:149:30;;;;;;;;;17672:20;;-1:-1:-1;17411:501:30;;-1:-1:-1;;17411:501:30;;17810:24;;:76;;;;;17738:163;;17767:9;;17794:93;;17810:52;;;;;:76;;17863:10;;17875;;17810:76;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17810:76:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17810:76:30;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17810:76:30;;;;;;;;;17794:15;:93::i;:::-;17738:11;:163::i;:::-;17723:178;;17411:501;17929:860;;;;;;;;17984:1;17929:860;;;;18026:1;17929:860;;;;18055:161;18090:9;:24;;;:38;;;18129:9;:22;;;18153:10;18090:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18090:74:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18090:74:30;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18090:74:30;;;;;;;;;18182:14;:20;;;18055:17;:161::i;:::-;17929:860;;;;18245:162;18280:9;:24;;;:38;;;18319:9;:23;;;18344:10;18280:75;;;;;;;;;;;;;;;;;18245:162;17929:860;;;;18436:162;18471:9;:24;;;:38;;;18510:9;:23;;;18535:10;18471:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18471:75:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18471:75:30;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18471:75:30;;;;;;;;;18564:14;:20;;;18436:17;:162::i;:::-;17929:860;;;;18624:10;17929:860;;;;18660:10;17929:860;;;;18695:9;17929:860;;;;18729:9;17929:860;;;;18766:12;17929:860;;;17922:867;;;;;;;16885:1911;;;;;:::o;13700:2636::-;13966:22;;;;:28;13940:274;;13966:42;;13998:10;13966:42;;:143;;-1:-1:-1;14024:24:30;;14068:22;;;;:28;14024:85;;;;;:43;;;;;;;:85;;14098:10;;14024:85;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14024:85:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14024:85:30;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14024:85:30;;;;;;;;;14123:4;13940:274;14176:9;:22;;;:28;;;13940:12;:274::i;:::-;14225:202;14319:10;14251:9;:24;;;:50;;;14302:9;14312:1;14302:12;;;;;;;;;;;;;;14251:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14251:64:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14251:64:30;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14251:64:30;;;;;;;;;:78;14343:4;14225:202;14405:9;14415:1;14405:12;;;;;;;;;;;;;;14225;:202::i;:::-;14438:243;14551:10;14464:9;:24;;;:50;;;14515:9;14544:1;14525:9;:16;:20;14515:31;;;;;;;;;;;;;;14464:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14464:83:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14464:83:30;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14464:83:30;;;;;;;;;:97;14575:4;14438:243;14640:9;14669:1;14650:9;:16;:20;14640:31;;;;;;;14438:243;14696:16;;;;:21;;14692:1638;;14845:39;;:::i;:::-;14902;;:::i;:::-;14958:197;15000:9;:24;;;15042:9;:17;;;15077:9;:23;;;15118:9;:23;;;14958:24;:197::i;:::-;15199:23;;14827:328;;-1:-1:-1;14827:328:30;-1:-1:-1;15169:138:30;;15199:28;;15245:4;15169:138;:12;:138::i;:::-;15321:416;15421:21;15351:24;;15393:23;;;;;15351:66;;;;;:41;;;;;;;:66;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15351:66:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15351:66:30;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15351:66:30;;;;;;;;;:91;;;;;;;;;:299;;;;15463:187;15501:17;:23;;;15546:17;:23;;;15591:9;:24;;;:39;;;:41;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15591:41:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15591:41:30;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15591:41:30;;;;;;;;;15463:16;:187::i;:::-;15462:188;15351:299;15668:4;15321:416;:12;:416::i;:::-;14692:1638;;;;;15864:11;15878:9;:21;;;:31;;;15910:9;:23;;;15935:10;15878:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15878:68:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15878:68:30;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15878:68:30;;;;;;;;;15864:82;;;;15960:185;16000:9;:16;;;15990:26;;:6;:26;16034:4;15960:185;16091:6;16115:9;:16;;;15960:185;;:12;:185::i;:::-;16159:160;16199:18;:16;:18::i;:::-;16189:28;;:6;:28;;16235:4;16159:160;16299:6;16159:12;:160::i;12416:887::-;12546:20;12569:46;12589:5;:19;;;:25;;;12569:5;:15;;;:19;;:46;;;;:::i;:::-;12546:69;;12625:20;12648:49;12671:5;:19;;;:25;;;12648:5;:18;;;:22;;:49;;;;:::i;:::-;12625:72;;12730:15;12711;:34;12707:590;;12876:19;;;;:25;;;;;;12842:31;;;:59;;;;12958:25;12985:15;;;;13002:18;;;;12935:86;;12958:25;12985:15;12935:22;:86::i;:::-;12915:106;;12707:590;;;13086:141;13119:5;:19;;;:25;;;13162:5;:18;;;13198:5;:15;;;13086;:141::i;:::-;13052:31;;;;:175;;;;13261:19;;;;:25;;13241:45;;12707:590;12416:887;;;:::o;1294:426:77:-;1428:4;1423:291;;1542:24;1561:4;1542:18;:24::i;:::-;1592:5;1623:26;1642:6;1623:18;:26::i;:::-;1500:171;;;;;;;;;;;834:176:124;892:7;923:5;;;946:6;;;;938:46;;;;;;;;;;;;;;1002:1;-1:-1:-1;834:176:124;;;;;:::o;1274:134::-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;18869:645:30:-;19025:21;19062:30;19114:16;:23;19140:1;19114:27;19095:47;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;19062:80:30;-1:-1:-1;19157:6:30;19152:109;19173:16;:23;19169:1;:27;19152:109;;;19231:16;19248:1;19231:19;;;;;;;;;;;;;;19217:8;19226:1;19217:11;;;;;;;;;;;;;;;;;:33;19198:3;;19152:109;;;;19311:9;:22;;;:28;;;19290:49;;:8;19299:1;19290:11;;;;;;;;;;;;;;:17;;;:49;;;:116;;;;;19377:9;:22;;;:29;;;19355:8;19364:1;19355:11;;;;;;;;;;;;;;:18;;;:51;19290:116;19270:146;;;;19459:9;:23;;;19427:8;19454:1;19436:8;:15;:19;19427:29;;;;;;;;;;;;;;;;;:55;19499:8;18869:645;-1:-1:-1;;;18869:645:30:o;19520:2091::-;19770:27;19813:35;19876:15;:22;19901:1;19876:26;19851:52;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;19918:16:30;;;;19813:90;;-1:-1:-1;19918:20:30;;;19914:1546;;20112:612;;;;;;;;20157:24;20112:612;;-1:-1:-1;20112:612:30;;;;;;;20229:211;;;;;;;20271:4;20229:211;;20112:612;;;;;20229:211;;;;;;;;;20357:26;20229:211;;;;20408:5;:17;;;20229:211;;;20112:612;;;;20471:5;:16;;;20112:612;;;;20520:5;:16;;;20112:612;;;;20572:9;:21;;;20112:612;;;;;;20642:1;20624:8;:15;:19;20112:612;;;;20674:5;:16;;;20692:9;:16;;;20663:46;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;20663:46:30;;;20112:612;;;20099:7;20107:1;20099:10;;;;;;;;;;;;;:625;;;;19914:1546;;;20887:562;;;;;;;;20932:28;20887:562;;-1:-1:-1;20887:562:30;;;;;;;21008:211;;;;;;;21050:4;21008:211;;20887:562;;;;;21008:211;;;;;;;21136:26;21008:211;;;;;;;21187:17;;21008:211;;;;;20887:562;;;21250:16;;;;20887:562;;;;-1:-1:-1;21299:16:30;;;;20887:562;;;;-1:-1:-1;20887:562:30;;;;;21383:15;;:19;;20887:562;;;;21422:12;;;;;;;;;;;20887:562;;;20874:10;;:7;;21136:26;20874:10;;;;;;;;;:575;;;;19914:1546;21475:6;21470:110;21491:15;:22;21487:1;:26;21470:110;;;21551:15;21567:1;21551:18;;;;;;;;;;;;;;21534:7;21542:1;21546;21542:5;21534:14;;;;;;;;;;;;;;;;;:35;21515:3;;21470:110;;;-1:-1:-1;21597:7:30;-1:-1:-1;19520:2091:30;;;;;;;:::o;6359:966:77:-;6462:12;6537:19;6576:5;6559:23;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;6559:23:77;;;;-1:-1:-1;49:4;6688:571:77;6709:5;;6688:571;;6960:9;;6862:3;;;;;6960:6;;6862:3;;6960:9;;;;;;;;;;;;:14;6956:293;;7015:1;7011:5;7141:22;;7148:6;-1:-1:-1;7221:13:77;;6956:293;6688:571;;;-1:-1:-1;7306:12:77;;;7316:1;7306:12;;;;;;;;;;;-1:-1:-1;7299:19:77;6359:966;-1:-1:-1;;;6359:966:77:o;7331:912::-;7425:12;7457:10;7453:51;;-1:-1:-1;7483:10:77;;;;;;;;;;;;;;;;;;;7453:51;7565:5;7553:9;7604:69;7611:6;;7604:69;;7633:8;;7660:2;7655:7;;;;7604:69;;;7714:17;7744:6;7734:17;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;7734:17:77;87:34:-1;135:17;;-1:-1;7734:17:77;-1:-1:-1;7843:5:77;;-1:-1:-1;7714:37:77;-1:-1:-1;7875:6:77;7858:357;7883:5;;7858:357;;8036:3;;8132:2;8128:1;:6;902:2;8114:21;8103:34;;8093:4;8098:1;8093:7;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;8202:2:77;8197:7;;;;7858:357;;;-1:-1:-1;8232:4:77;7331:912;-1:-1:-1;;;;7331:912:77:o;996:146:67:-;1058:13;893:1;942:3;1102:9;:25;1101:33;1090:45;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;1090:45:67;-1:-1:-1;1083:52:67;996:146;-1:-1:-1;;996:146:67:o;6710:411:5:-;6863:4;;6879:206;6900:7;:14;6896:1;:18;6879:206;;;6940:32;6952:7;6961;6969:1;6961:10;;;;;;;;;;;;;;6940:11;:32::i;:::-;6935:140;;6992:32;7004:7;7013;7021:1;7013:10;;;;;;;;;;;;;;6992:11;:32::i;:::-;7059:1;7042:18;;;;6935:140;6916:3;;6879:206;;;-1:-1:-1;7101:13:5;;6710:411;-1:-1:-1;;;6710:411:5:o;2086:1014:67:-;2152:4;2223:3;2241:15;;;:19;2237:100;;2276:10;;2237:100;;;2323:3;2317:9;;;;;2237:100;2351:14;;;:18;2347:97;;2385:9;;2347:97;;;2431:2;2425:8;;;;;2347:97;2458:14;;;:18;2454:97;;-1:-1:-1;;2492:9:67;2454:97;;;2538:2;2532:8;;;;;2454:97;2565:14;;;:18;2561:97;;2599:9;;2561:97;;;2645:2;2639:8;;;;;2561:97;2672:13;;;:17;2668:94;;2705:8;;2668:94;;;2750:1;2744:7;;;;;2668:94;2780:3;2776:7;;:11;2772:88;;2803:8;;2772:88;;;2848:1;2842:7;;;;;2772:88;2878:3;2874:7;;:11;2870:143;;2901:8;;2870:143;;;2946:1;2940:7;;;;;2870:143;3031:3;3027:7;;:11;3023:50;;3054:8;;3090:3;2086:1014;-1:-1:-1;;2086:1014:67:o;1148:154::-;942:3;1267:21;;;;1266:29;;1148:154::o;1895:137::-;893:1;2014:10;;2004:21;;;1895:137::o;4900:263:5:-;5011:17;;:::i;:::-;5047:109;5074:7;5095:1;5110:7;:14;5138:8;5047:13;:109::i;1283:168:69:-;1376:11;;:::i;:::-;1410:34;;;;;;;;;1424:7;;1410:34;;1424:17;;1006:6;1424:17;:11;:17;:::i;:::-;1410:34;;1403:41;1283:168;-1:-1:-1;;1283:168:69:o;1457:188::-;1570:7;1600:38;1616:6;1624:1;:7;;;1006:6;1600:15;:38::i;4154:567:74:-;4285:16;;:::i;:::-;4346:11;;;;4372:10;;4338:20;;;;;4368:347;;;4405:130;;;;;;;;;4439:4;4405:130;;;4501:12;;;;4405:130;;;;4468:52;;:10;;:52;;1200:6;4468:52;:32;:52;:::i;:::-;4405:130;;;4398:137;;;;;4368:347;4573:131;;;;;;;;;-1:-1:-1;4573:131:74;;4670:12;;4573:131;;;;4637:52;;:10;;:52;;1200:6;4637:52;:32;:52;:::i;2962:561:77:-;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;2750:533:5:-;2988:21;;:::i;:::-;3019;;:::i;:::-;3068:208;3098:14;3126:11;3151:7;3172:9;3227:4;3068:16;:208::i;:::-;3061:215;;;;2750:533;;;;;;;:::o;16447:305:30:-;16606:4;16626:22;16651:31;16663:11;16676:5;16651:11;:31::i;:::-;16626:56;-1:-1:-1;16714:31:30;:11;16626:56;16714:31;:15;:31;:::i;:::-;16699:46;;;;;16447:305;-1:-1:-1;;;;16447:305:30:o;910:132:80:-;980:6;1009:26;1019:15;1009:9;:26::i;:::-;1002:33;;910:132;:::o;2159:459:124:-;2217:7;2458:6;2454:45;;-1:-1:-1;2487:1:124;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;:1;2544:5;;;;;:10;2536:56;;;;;;;;;;;;;1494:409:75;1654:7;1681:11;;;:29;;-1:-1:-1;1696:14:75;;1681:29;1677:151;;;1789:28;1802:1;1805:11;1789:12;:28::i;:::-;1782:35;;;;1677:151;1844:52;1894:1;1844:45;1877:11;1844:28;1894:1;1844:21;:6;1855:9;1844:21;:10;:21;:::i;:::-;:25;:28;:25;:28;:::i;:::-;:32;:45;:32;:45;:::i;:::-;:49;:52;:49;:52;:::i;1110:228::-;1263:7;1293:38;1319:11;1293:21;:6;1304:9;1293:21;:10;:21;:::i;1732:187:124:-;1818:7;1853:12;1845:6;;;;1837:29;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:124;;;1732:187::o;1577:312:67:-;1676:4;;942:3;1711:8;:24;;-1:-1:-1;1745:19:67;942:3;1767:8;:24;1745:46;;1801:8;1843:14;893:1;1836:21;;1812:7;1820:11;1812:20;;;;;;;;;;;;;;:46;1801:57;;1881:1;1875:3;:7;1868:14;;;;;1577:312;;;;:::o;1308:263::-;1517:20;;942:3;1427:24;;;1483;;;;893:1;1542:21;;;1517:7;;1427:24;;1517:20;;;;;;;;;;;:47;;;;;;;;;;;1308:263;;;;:::o;7127:945:5:-;7294:17;;:::i;:::-;7334:29;;;7377:8;;;:70;;;7390:3;7397:1;7390:8;:56;;;;;7438:8;7402:7;7410:14;7402:23;;;;;;;;;;;;;;:32;;;:44;;7390:56;7373:148;;;7463:47;;;;;;;;;;;7373:148;7531:8;7565:1;7559:3;:7;7542:14;:24;7531:35;;7576:16;7595:7;7603:3;7595:12;;;;;;;;;;;;;;:21;;;7576:40;;7641:11;7630:8;:22;7626:440;;;7675:131;7706:7;7731:14;7763:3;7784:8;7675:13;:131::i;:::-;7668:138;;;;;;;7626:440;7838:11;7827:8;:22;7823:243;;;7872:133;7903:7;7928:3;7934:1;7928:7;7953:12;7983:8;7872:13;:133::i;7823:243::-;8043:7;8051:3;8043:12;;;;;;;;;;;;;;8036:19;;;;;;;2059:724:75;2223:7;2250:11;;;:29;;-1:-1:-1;2265:14:75;;2250:29;2246:151;;;2358:28;2371:1;2374:11;2358:12;:28::i;2246:151::-;2406:11;2420:21;:6;2431:9;2420:21;:10;:21;:::i;:::-;2406:35;-1:-1:-1;2680:96:75;2735:32;2765:1;2735:25;2758:1;2735:18;:11;2765:1;2735:18;:15;:18;:::i;:32::-;2708:23;:6;2719:11;2708:23;:10;:23;:::i;:::-;:59;;:67;;2774:1;2708:67;;;2770:1;2708:67;2680:96;;:23;:6;2691:11;2680:23;:10;:23;:::i;:96::-;2673:103;2059:724;-1:-1:-1;;;;;2059:724:75:o;8249:962:77:-;8521:13;;;8531:2;8521:13;;;8343:12;8521:13;;;;;;8383:14;;;;8343:12;;8521:13;;;21:6:-1;;104:10;8521:13:77;87:34:-1;135:17;;-1:-1;8521:13:77;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:77;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:77;9164:6;;;;;8807:3;;8779:402;;5195:1451:5;5462:21;;:::i;:::-;5493;;:::i;:::-;5535:33;;:::i;:::-;5578;;:::i;:::-;5627:9;5622:974;5646:9;:16;5642:1;:20;5622:974;;;5683:20;;:::i;:::-;5706:14;:28;;;5735:7;5744:9;5754:1;5744:12;;;;;;;;;;;;;;5706:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5706:51:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5706:51:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5706:51:5;;;;;;;;;5683:74;;5775:12;:3;:10;:12::i;:::-;5771:114;;;5862:8;;;5771:114;5898:28;;:::i;:::-;5929:39;5942:11;5955:9;5965:1;5955:12;;;;;;;;;;;;;;5929;:39::i;:::-;5898:70;;5982:24;;:::i;:::-;6009:40;6027:3;6032:10;:16;;;6009:17;:40::i;:::-;6102:16;;;;:22;6084:13;;;;5982:67;;-1:-1:-1;6063:18:5;;6084:41;;;:17;:41;:::i;:::-;6063:62;;6139:33;;:::i;:::-;6175:13;:11;:13::i;:::-;6139:49;;6206:23;6202:119;;;6265:41;6281:10;:24;;;6265:15;:41::i;:::-;6249:57;;6202:119;6338:12;;6334:252;;;6390:61;6412:38;6424:10;6436:13;6412:11;:38::i;:::-;6390:17;;;:61;:21;:61;:::i;:::-;6370:81;;6334:252;;;6510:61;6532:38;6544:10;6556:13;6532:11;:38::i;:::-;6510:17;;;:61;:21;:61;:::i;:::-;6490:81;;6334:252;5622:974;;;;;;5664:3;;5622:974;;;-1:-1:-1;6614:11:5;;;;-1:-1:-1;5195:1451:5;-1:-1:-1;;;;;;5195:1451:5:o;3426:310:75:-;3517:6;3562;3579:127;3605:16;;;;;3635:4;3579:127;3562:6;3579:12;:127::i;3073:130:124:-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;4500:128::-;4558:7;4584:37;4588:1;4591;4584:37;;;;;;;;;;;;;;;;;:3;:37::i;10183:325:77:-;10272:4;10340:2;10332:5;:10;10328:79;;;-1:-1:-1;902:2:77;10376:18;;10365:31;;10358:38;;10328:79;-1:-1:-1;956:2:77;10472:27;10461:40;;;10183:325::o;3722:137:82:-;3840:7;;;:12;;;;3722:137::o;1153:124:69:-;1215:11;;:::i;:::-;-1:-1:-1;1249:21:69;;;;;;;;;1006:6;1249:21;;1153:124;:::o;1651:188::-;1764:7;1794:38;1810:6;1006;1824:1;:7;;;1794:15;:38::i;3718:338:124:-;3804:7;3904:12;3897:5;3889:28;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:124:o;5132:163::-;5218:7;5253:12;5245:6;5237:29;;;;;;;;;;;;;;;;5287:1;5283;:5;;;;;;;5132:163;-1:-1:-1;;;;5132:163:124:o;1810:19803:30:-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;1810:19803:30;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1810:19803:30;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1810:19803:30;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;1810:19803:30;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;301:707;;418:3;411:4;403:6;399:17;395:27;385:2;;436:1;433;426:12;385:2;473:6;460:20;495:80;510:64;567:6;510:64;;;495:80;;;486:89;;592:5;617:6;610:5;603:21;647:4;639:6;635:17;625:27;;669:4;664:3;660:14;653:21;;722:6;769:3;761:4;753:6;749:17;744:3;740:27;737:36;734:2;;;786:1;783;776:12;734:2;811:1;796:206;821:6;818:1;815:13;796:206;;;879:3;901:37;934:3;922:10;901:37;;;889:50;;-1:-1;962:4;953:14;;;;981;;;;;843:1;836:9;796:206;;;800:14;378:630;;;;;;;;1052:761;;1205:3;1198:4;1190:6;1186:17;1182:27;1172:2;;1223:1;1220;1213:12;1172:2;1253:6;1247:13;1275:105;1290:89;1372:6;1290:89;;1275:105;1408:21;;;1452:4;1440:17;;;;1266:114;;-1:-1;1465:14;;1440:17;1560:1;1545:262;1570:6;1567:1;1564:13;1545:262;;;1646:3;1640:10;1632:6;1628:23;1670:73;1739:3;1727:10;1670:73;;;1658:86;;-1:-1;1767:4;1758:14;;;;1786;;;;;1592:1;1585:9;1545:262;;1851:779;;1998:3;1991:4;1983:6;1979:17;1975:27;1965:2;;2016:1;2013;2006:12;1965:2;2046:6;2040:13;2068:99;2083:83;2159:6;2083:83;;2068:99;2059:108;;2184:5;2209:6;2202:5;2195:21;2239:4;2231:6;2227:17;2217:27;;2261:4;2256:3;2252:14;2245:21;;2314:6;2361:3;2353:4;2345:6;2341:17;2336:3;2332:27;2329:36;2326:2;;;2378:1;2375;2368:12;2326:2;2403:1;2388:236;2413:6;2410:1;2407:13;2388:236;;;2471:3;2493:67;2556:3;2544:10;2493:67;;;2481:80;;-1:-1;2584:4;2575:14;;;;2612:4;2603:14;;;;;2435:1;2428:9;2388:236;;2656:722;;2784:3;2777:4;2769:6;2765:17;2761:27;2751:2;;2802:1;2799;2792:12;2751:2;2832:6;2826:13;2854:80;2869:64;2926:6;2869:64;;2854:80;2845:89;;2951:5;2976:6;2969:5;2962:21;3006:4;2998:6;2994:17;2984:27;;3028:4;3023:3;3019:14;3012:21;;3081:6;3128:3;3120:4;3112:6;3108:17;3103:3;3099:27;3096:36;3093:2;;;3145:1;3142;3135:12;3093:2;3170:1;3155:217;3180:6;3177:1;3174:13;3155:217;;;3238:3;3260:48;3304:3;3292:10;3260:48;;;3248:61;;-1:-1;3332:4;3323:14;;;;3351;;;;;3202:1;3195:9;3155:217;;3386:124;3450:20;;3475:30;3450:20;3475:30;;3517:128;3592:13;;3610:30;3592:13;3610:30;;3653:434;;3761:3;3754:4;3746:6;3742:17;3738:27;3728:2;;3779:1;3776;3769:12;3728:2;3809:6;3803:13;3831:60;3846:44;3883:6;3846:44;;3831:60;3822:69;;3911:6;3904:5;3897:21;3947:4;3939:6;3935:17;3980:4;3973:5;3969:16;4015:3;4006:6;4001:3;3997:16;3994:25;3991:2;;;4032:1;4029;4022:12;3991:2;4042:39;4074:6;4069:3;4064;4042:39;;;3721:366;;;;;;;;4095:166;4189:13;;4207:49;4189:13;4207:49;;4268:180;4369:13;;4387:56;4369:13;4387:56;;4636:158;4726:13;;4744:45;4726:13;4744:45;;4833:1620;;4958:6;4946:9;4941:3;4937:19;4933:32;4930:2;;;4978:1;4975;4968:12;4930:2;4996:22;5011:6;4996:22;;;4987:31;-1:-1;5074:1;5106:76;5178:3;5158:9;5106:76;;;5081:102;;-1:-1;5249:2;5282:60;5338:3;5314:22;;;5282:60;;;5275:4;5268:5;5264:16;5257:86;5204:150;5406:2;5439:86;5521:3;5512:6;5501:9;5497:22;5439:86;;;5432:4;5425:5;5421:16;5414:112;5364:173;5598:3;5632:60;5688:3;5679:6;5668:9;5664:22;5632:60;;;5625:4;5618:5;5614:16;5607:86;5547:157;5767:3;5801:60;5857:3;5848:6;5837:9;5833:22;5801:60;;;5794:4;5787:5;5783:16;5776:86;5714:159;5931:3;5965:60;6021:3;6012:6;6001:9;5997:22;5965:60;;;5958:4;5951:5;5947:16;5940:86;5883:154;6097:3;6131:60;6187:3;6178:6;6167:9;6163:22;6131:60;;;6124:4;6117:5;6113:16;6106:86;6047:156;6274:3;6263:9;6259:19;6253:26;6299:18;6291:6;6288:30;6285:2;;;6331:1;6328;6321:12;6285:2;6366:65;6427:3;6418:6;6407:9;6403:22;6366:65;;;6359:4;6352:5;6348:16;6341:91;6213:230;4924:1529;;;;;6491:859;;6617:4;6605:9;6600:3;6596:19;6592:30;6589:2;;;6635:1;6632;6625:12;6589:2;6653:20;6668:4;6653:20;;;6644:29;-1:-1;6723:1;6755:57;6808:3;6788:9;6755:57;;;6730:83;;-1:-1;6882:2;6915:83;6994:3;6970:22;;;6915:83;;;6908:4;6901:5;6897:16;6890:109;6834:176;7059:2;7092:80;7168:3;7159:6;7148:9;7144:22;7092:80;;;7085:4;7078:5;7074:16;7067:106;7020:164;7235:2;7268:60;7324:3;7315:6;7304:9;7300:22;7268:60;;;7261:4;7254:5;7250:16;7243:86;7194:146;6583:767;;;;;7383:344;;7506:4;7494:9;7489:3;7485:19;7481:30;7478:2;;;7524:1;7521;7514:12;7478:2;7542:20;7557:4;7542:20;;;7533:29;-1:-1;7613:1;7645:60;7701:3;7681:9;7645:60;;;7620:86;;-1:-1;7631:5;7472:255;-1:-1;;7472:255;7762:661;;7886:4;7874:9;7869:3;7865:19;7861:30;7858:2;;;7904:1;7901;7894:12;7858:2;7922:20;7937:4;7922:20;;;7913:29;-1:-1;7994:1;8026:59;8081:3;8061:9;8026:59;;;8001:85;;-1:-1;8149:2;8182:59;8237:3;8213:22;;;8182:59;;;8175:4;8168:5;8164:16;8157:85;8107:146;8309:2;8342:59;8397:3;8388:6;8377:9;8373:22;8342:59;;;8335:4;8328:5;8324:16;8317:85;8263:150;7852:571;;;;;8456:497;;8575:4;8563:9;8558:3;8554:19;8550:30;8547:2;;;8593:1;8590;8583:12;8547:2;8611:20;8626:4;8611:20;;;8602:29;-1:-1;8682:1;8714:60;8770:3;8750:9;8714:60;;;8689:86;;-1:-1;8838:2;8871:60;8927:3;8903:22;;;8871:60;;;8864:4;8857:5;8853:16;8846:86;8796:147;8541:412;;;;;8986:468;;9098:4;9086:9;9081:3;9077:19;9073:30;9070:2;;;9116:1;9113;9106:12;9070:2;9134:20;9149:4;9134:20;;;9125:29;-1:-1;9205:1;9237:49;9282:3;9262:9;9237:49;;;9212:75;;-1:-1;9350:2;9383:49;9428:3;9404:22;;;9383:49;;9484:495;;9606:4;9594:9;9589:3;9585:19;9581:30;9578:2;;;9624:1;9621;9614:12;9578:2;9642:20;9657:4;9642:20;;;9633:29;-1:-1;9712:1;9744:57;9797:3;9777:9;9744:57;;;9719:83;;-1:-1;9864:2;9897:60;9953:3;9929:22;;;10444:13;;10462:33;10444:13;10462:33;;10507:130;10574:20;;10599:33;10574:20;10599:33;;10644:134;10722:13;;10740:33;10722:13;10740:33;;10785:132;10862:13;;10880:32;10862:13;10880:32;;10924:132;11001:13;;11019:32;11001:13;11019:32;;11063:745;;;11289:2;11277:9;11268:7;11264:23;11260:32;11257:2;;;11305:1;11302;11295:12;11257:2;11340:24;;11384:18;11373:30;;11370:2;;;11416:1;11413;11406:12;11370:2;11436:108;11536:7;11527:6;11516:9;11512:22;11436:108;;;11426:118;;11319:231;11602:2;11591:9;11587:18;11581:25;11626:18;11618:6;11615:30;11612:2;;;11658:1;11655;11648:12;11612:2;11678:114;11784:7;11775:6;11764:9;11760:22;11678:114;;;11668:124;;11560:238;11251:557;;;;;;11815:392;;11955:2;11943:9;11934:7;11930:23;11926:32;11923:2;;;11971:1;11968;11961:12;11923:2;12006:24;;12050:18;12039:30;;12036:2;;;12082:1;12079;12072:12;12036:2;12102:89;12183:7;12174:6;12163:9;12159:22;12102:89;;12214:257;;12326:2;12314:9;12305:7;12301:23;12297:32;12294:2;;;12342:1;12339;12332:12;12294:2;12377:1;12394:61;12447:7;12427:9;12394:61;;12478:287;;12605:2;12593:9;12584:7;12580:23;12576:32;12573:2;;;12621:1;12618;12611:12;12573:2;12656:1;12673:76;12741:7;12721:9;12673:76;;12772:309;;12910:2;12898:9;12889:7;12885:23;12881:32;12878:2;;;12926:1;12923;12916:12;12878:2;12961:1;12978:87;13057:7;13037:9;12978:87;;13088:311;;13227:2;13215:9;13206:7;13202:23;13198:32;13195:2;;;13243:1;13240;13233:12;13195:2;13278:1;13295:88;13375:7;13355:9;13295:88;;13406:1345;;;;;;;;;13697:3;13685:9;13676:7;13672:23;13668:33;13665:2;;;13714:1;13711;13704:12;13665:2;13749:1;13766:76;13834:7;13814:9;13766:76;;;13756:86;;13728:120;13879:2;13897:76;13965:7;13956:6;13945:9;13941:22;13897:76;;;13887:86;;13858:121;14010:3;14029:53;14074:7;14065:6;14054:9;14050:22;14029:53;;;14019:63;;13989:99;14119:3;14138:53;14183:7;14174:6;14163:9;14159:22;14138:53;;;14128:63;;14098:99;14256:3;14245:9;14241:19;14228:33;14281:18;14273:6;14270:30;14267:2;;;14313:1;14310;14303:12;14267:2;14333:78;14403:7;14394:6;14383:9;14379:22;14333:78;;;14323:88;;14207:210;14448:3;14467:53;14512:7;14503:6;14492:9;14488:22;14467:53;;;14457:63;;14427:99;14557:3;14576:53;14621:7;14612:6;14601:9;14597:22;14576:53;;;14566:63;;14536:99;14666:3;14685:50;14727:7;14718:6;14707:9;14703:22;14685:50;;;14675:60;;14645:96;13659:1092;;;;;;;;;;;;14758:307;;14895:2;14883:9;14874:7;14870:23;14866:32;14863:2;;;14911:1;14908;14901:12;14863:2;14946:1;14963:86;15041:7;15021:9;14963:86;;15390:495;;;15570:2;15558:9;15549:7;15545:23;15541:32;15538:2;;;15586:1;15583;15576:12;15538:2;15621:1;15638:88;15718:7;15698:9;15638:88;;;15628:98;;15600:132;15763:2;15781:88;15861:7;15852:6;15841:9;15837:22;15781:88;;15892:263;;16007:2;15995:9;15986:7;15982:23;15978:32;15975:2;;;16023:1;16020;16013:12;15975:2;16058:1;16075:64;16131:7;16111:9;16075:64;;16162:261;;16276:2;16264:9;16255:7;16251:23;16247:32;16244:2;;;16292:1;16289;16282:12;16244:2;16327:1;16344:63;16399:7;16379:9;16344:63;;16431:173;;16518:46;16560:3;16552:6;16518:46;;;-1:-1;;16593:4;16584:14;;16511:93;16613:257;;16764:100;16860:3;16852:6;16764:100;;16879:253;;17004:88;17088:3;17080:6;17004:88;;;-1:-1;;17121:4;17112:14;;16997:135;17140:142;17231:45;17270:5;17231:45;;;17226:3;17219:58;17213:69;;;17289:103;17362:24;17380:5;17362:24;;17550:690;;17695:54;17743:5;17695:54;;;17762:86;17841:6;17836:3;17762:86;;;17755:93;;17869:56;17919:5;17869:56;;;17945:7;17973:1;17958:260;17983:6;17980:1;17977:13;17958:260;;;18050:6;18044:13;18071:63;18130:3;18115:13;18071:63;;;18064:70;;18151:60;18204:6;18151:60;;;18141:70;-1:-1;;18005:1;17998:9;17958:260;;;-1:-1;18231:3;;17674:566;-1:-1;;;;;17674:566;18315:1048;;18510:79;18583:5;18510:79;;;18602:111;18706:6;18701:3;18602:111;;;18595:118;;18736:3;18778:4;18770:6;18766:17;18761:3;18757:27;18805:81;18880:5;18805:81;;;18906:7;18934:1;18919:405;18944:6;18941:1;18938:13;18919:405;;;19006:9;19000:4;18996:20;18991:3;18984:33;19051:6;19045:13;19073:114;19182:4;19167:13;19073:114;;;19065:122;;19204:85;19282:6;19204:85;;;19312:4;19303:14;;;;;19194:95;-1:-1;;18966:1;18959:9;18919:405;;;-1:-1;19337:4;;18489:874;-1:-1;;;;;;;18489:874;19426:842;;19609:73;19676:5;19609:73;;;19695:105;19793:6;19788:3;19695:105;;;19688:112;;19821:75;19890:5;19821:75;;;19916:7;19944:1;19929:317;19954:6;19951:1;19948:13;19929:317;;;20021:6;20015:13;20042:101;20139:3;20124:13;20042:101;;;20035:108;;20160:79;20232:6;20160:79;;;20150:89;-1:-1;;19976:1;19969:9;19929:317;;20276:94;20343:21;20358:5;20343:21;;20377:148;20476:43;20495:23;20512:5;20495:23;;;20476:43;;20532:148;20631:43;20650:23;20667:5;20650:23;;20687:152;20788:45;20808:24;20826:5;20808:24;;20846:356;;20974:38;21006:5;20974:38;;;21024:88;21105:6;21100:3;21024:88;;;21017:95;;21117:52;21162:6;21157:3;21150:4;21143:5;21139:16;21117:52;;;21181:16;;;;;20954:248;-1:-1;;20954:248;21209:315;;21305:34;21333:5;21305:34;;;21351:60;21404:6;21399:3;21351:60;;;21344:67;;21416:52;21461:6;21456:3;21449:4;21442:5;21438:16;21416:52;;;21489:29;21511:6;21489:29;;;21480:39;;;;21285:239;-1:-1;;;21285:239;21531:144;21618:51;21663:5;21618:51;;21682:158;21776:58;21828:5;21776:58;;22361:327;;22521:67;22585:2;22580:3;22521:67;;;22621:29;22601:50;;22679:2;22670:12;;22507:181;-1:-1;;22507:181;22697:370;;22857:67;22921:2;22916:3;22857:67;;;22957:34;22937:55;;23026:3;23021:2;23012:12;;23005:25;23058:2;23049:12;;22843:224;-1:-1;;22843:224;23076:374;;23236:67;23300:2;23295:3;23236:67;;;23336:34;23316:55;;23405:7;23400:2;23391:12;;23384:29;23441:2;23432:12;;23222:228;-1:-1;;23222:228;23459:331;;23619:67;23683:2;23678:3;23619:67;;;23719:33;23699:54;;23781:2;23772:12;;23605:185;-1:-1;;23605:185;23859:1616;24078:23;;23859:1616;;24004:6;23995:16;;;24107:77;23999:3;24078:23;24107:77;;;24026:164;24268:4;24261:5;24257:16;24251:23;24280:63;24337:4;24332:3;24328:14;24314:12;24280:63;;;24200:149;24424:4;24417:5;24413:16;24407:23;24436:119;24549:4;24544:3;24540:14;24526:12;24436:119;;;24359:202;24645:4;24638:5;24634:16;24628:23;24657:63;24714:4;24709:3;24705:14;24691:12;24657:63;;;24571:155;24812:4;24805:5;24801:16;24795:23;24824:63;24881:4;24876:3;24872:14;24858:12;24824:63;;;24736:157;24974:4;24967:5;24963:16;24957:23;24986:65;25043:6;25038:3;25034:16;25020:12;24986:65;;;24903:154;25140:4;25133:5;25129:16;25123:23;25152:65;25209:6;25204:3;25200:16;25186:12;25152:65;;;25067:156;25296:4;25289:5;25285:16;25279:23;25350:3;25344:4;25340:14;25331:6;25326:3;25322:16;25315:40;25370:67;25432:4;25418:12;25370:67;;25541:821;25746:23;;25680:4;25671:14;;;25775:57;25675:3;25746:23;25775:57;;;25700:138;25919:4;25912:5;25908:16;25902:23;25931:84;26009:4;26004:3;26000:14;25986:12;25931:84;;;25848:173;26093:4;26086:5;26082:16;26076:23;26105:81;26180:4;26175:3;26171:14;26157:12;26105:81;;;26031:161;26266:4;26259:5;26255:16;26249:23;26278:63;26335:4;26330:3;26326:14;26312:12;26278:63;;26418:475;26624:23;;26557:4;26548:14;;;26653:63;26552:3;26624:23;26653:63;;;26577:145;26797:4;26790:5;26786:16;26780:23;26809:63;26866:4;26861:3;26857:14;26843:12;26809:63;;27987:461;28186:23;;28120:4;28111:14;;;28215:57;28115:3;28186:23;28215:57;;28455:103;28528:24;28546:5;28528:24;;28685:110;28766:23;28783:5;28766:23;;28802:244;;28921:75;28992:3;28983:6;28921:75;;;-1:-1;29018:2;29009:12;;28909:137;-1:-1;28909:137;29053:553;;29269:93;29358:3;29349:6;29269:93;;;29262:100;;29373:73;29442:3;29433:6;29373:73;;;29468:1;29463:3;29459:11;29452:18;;29488:93;29577:3;29568:6;29488:93;;29613:978;;29927:93;30016:3;30007:6;29927:93;;;29920:100;;30031:73;30100:3;30091:6;30031:73;;;30126:1;30121:3;30117:11;30110:18;;30146:93;30235:3;30226:6;30146:93;;;30139:100;;30250:73;30319:3;30310:6;30250:73;;;30345:1;30340:3;30336:11;30329:18;;30365:93;30454:3;30445:6;30365:93;;;30358:100;;30469:73;30538:3;30529:6;30469:73;;;-1:-1;30564:1;30555:11;;29908:683;-1:-1;;;;;;29908:683;30598:1269;;30984:93;31073:3;31064:6;30984:93;;;30977:100;;31088:73;31157:3;31148:6;31088:73;;;31183:1;31178:3;31174:11;31167:18;;31203:93;31292:3;31283:6;31203:93;;;31196:100;;31307:73;31376:3;31367:6;31307:73;;;31402:1;31397:3;31393:11;31386:18;;31422:93;31511:3;31502:6;31422:93;;;31415:100;;31526:73;31595:3;31586:6;31526:73;;;31621:1;31616:3;31612:11;31605:18;;31641:93;31730:3;31721:6;31641:93;;;31634:100;;31745:73;31814:3;31805:6;31745:73;;;-1:-1;31840:1;31831:11;;30965:902;-1:-1;;;;;;;;30965:902;31874:213;31992:2;31977:18;;32006:71;31981:9;32050:6;32006:71;;32094:340;32248:2;32233:18;;32262:71;32237:9;32306:6;32262:71;;;32344:80;32420:2;32409:9;32405:18;32396:6;32344:80;;32441:807;32721:3;32706:19;;32736:71;32710:9;32780:6;32736:71;;;32818:72;32886:2;32875:9;32871:18;32862:6;32818:72;;;32901;32969:2;32958:9;32954:18;32945:6;32901:72;;;32984;33052:2;33041:9;33037:18;33028:6;32984:72;;;33105:9;33099:4;33095:20;33089:3;33078:9;33074:19;33067:49;33130:108;33233:4;33224:6;33130:108;;;33122:116;32692:556;-1:-1;;;;;;;32692:556;33255:796;33589:2;33603:47;;;33574:18;;33664:146;33574:18;33796:6;33664:146;;;33656:154;;33858:9;33852:4;33848:20;33843:2;33832:9;33828:18;33821:48;33883:158;34036:4;34027:6;33883:158;;34058:301;34196:2;34210:47;;;34181:18;;34271:78;34181:18;34335:6;34271:78;;34366:407;34557:2;34571:47;;;34542:18;;34632:131;34542:18;34632:131;;34780:407;34971:2;34985:47;;;34956:18;;35046:131;34956:18;35046:131;;35194:407;35385:2;35399:47;;;35370:18;;35460:131;35370:18;35460:131;;35608:407;35799:2;35813:47;;;35784:18;;35874:131;35784:18;35874:131;;36022:297;36182:2;36167:18;;36196:113;36171:9;36282:6;36196:113;;36638:416;36830:2;36815:18;;36844:117;36819:9;36934:6;36844:117;;;36972:72;37040:2;37029:9;37025:18;37016:6;36972:72;;37476:213;37594:2;37579:18;;37608:71;37583:9;37652:6;37608:71;;37696:324;37842:2;37827:18;;37856:71;37831:9;37900:6;37856:71;;;37938:72;38006:2;37995:9;37991:18;37982:6;37938:72;;38027:851;38325:3;38310:19;;38340:71;38314:9;38384:6;38340:71;;;38422:72;38490:2;38479:9;38475:18;38466:6;38422:72;;;38505;38573:2;38562:9;38558:18;38549:6;38505:72;;;38588:112;38696:2;38685:9;38681:18;38672:6;38588:112;;;38711:73;38779:3;38768:9;38764:19;38755:6;38711:73;;;38795;38863:3;38852:9;38848:19;38839:6;38795:73;;38885:431;39057:2;39042:18;;39071:71;39046:9;39115:6;39071:71;;;39153:72;39221:2;39210:9;39206:18;39197:6;39153:72;;;39236:70;39302:2;39291:9;39287:18;39278:6;39236:70;;39323:320;39467:2;39452:18;;39481:71;39456:9;39525:6;39481:71;;;39563:70;39629:2;39618:9;39614:18;39605:6;39563:70;;39650:256;39712:2;39706:9;39738:17;;;39813:18;39798:34;;39834:22;;;39795:62;39792:2;;;39870:1;39867;39860:12;39792:2;39886;39879:22;39690:216;;-1:-1;39690:216;39913:304;;40072:18;40064:6;40061:30;40058:2;;;40104:1;40101;40094:12;40058:2;-1:-1;40139:4;40127:17;;;40192:15;;39995:222;41201:317;;41340:18;41332:6;41329:30;41326:2;;;41372:1;41369;41362:12;41326:2;-1:-1;41503:4;41439;41416:17;;;;-1:-1;;41412:33;41493:15;;41263:255;41525:151;41649:4;41640:14;;41597:79;42043:137;42146:12;;42117:63;43290:178;43408:19;;;43457:4;43448:14;;43401:67;44380:91;;44442:24;44460:5;44442:24;;44478:85;44544:13;44537:21;;44520:43;44570:144;44642:66;44631:78;;44614:100;44721:144;44793:66;44782:78;;44765:100;44872:72;44934:5;44917:27;44951:138;45029:5;45035:49;45029:5;45035:49;;45096:152;45181:5;45187:56;45181:5;45187:56;;45408:113;45481:34;45470:46;;45453:68;45528:121;45601:42;45590:54;;45573:76;45735:88;45807:10;45796:22;;45779:44;45830:104;45902:26;45891:38;;45874:60;45941:129;;46028:37;46059:5;46028:37;;46077:138;;46170:40;46204:5;46170:40;;46222:152;;46322:47;46363:5;46322:47;;46534:121;;46613:37;46644:5;46613:37;;46778:268;46843:1;46850:101;46864:6;46861:1;46858:13;46850:101;;;46931:11;;;46925:18;46912:11;;;46905:39;46886:2;46879:10;46850:101;;;46966:6;46963:1;46960:13;46957:2;;;-1:-1;;47031:1;47013:16;;47006:27;46827:219;47295:97;47383:2;47363:14;-1:-1;;47359:28;;47343:49;47400:107;47485:1;47478:5;47475:12;47465:2;;47491:9;47465:2;47459:48;;47514:114;47606:1;47599:5;47596:12;47586:2;;47612:9;47753:117;47822:24;47840:5;47822:24;;;47815:5;47812:35;47802:2;;47861:1;47858;47851:12;47877:111;47943:21;47958:5;47943:21;;47995:110;48080:1;48073:5;48070:12;48060:2;;48096:1;48093;48086:12;48112:117;48204:1;48197:5;48194:12;48184:2;;48220:1;48217;48210:12;48357:106;48438:1;48431:5;48428:12;48418:2;;48454:1;48451;48444:12;48470:117;48539:24;48557:5;48539:24;;48594:117;48663:24;48681:5;48663:24;;48718:115;48786:23;48803:5;48786:23;;48840:115;48908:23;48925:5;48908:23;",
|
|
167
167
|
"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 { ReentrancyGuard } from \"@openzeppelin/contracts/utils/ReentrancyGuard.sol\";\n\nimport { IDolomiteMargin } from \"../../protocol/interfaces/IDolomiteMargin.sol\";\n\nimport { Account } from \"../../protocol/lib/Account.sol\";\nimport { Actions } from \"../../protocol/lib/Actions.sol\";\nimport { Decimal } from \"../../protocol/lib/Decimal.sol\";\nimport { Interest } from \"../../protocol/lib/Interest.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\";\n\nimport { LiquidatorProxyHelper } from \"../helpers/LiquidatorProxyHelper.sol\";\nimport { IExpiry } from \"../interfaces/IExpiry.sol\";\n\nimport { DolomiteAmmRouterProxy } from \"./DolomiteAmmRouterProxy.sol\";\n\n\n/**\n * @title LiquidatorProxyV1WithAmm\n * @author Dolomite\n *\n * Contract for liquidating other accounts in DolomiteMargin and atomically selling off collateral via Dolomite AMM\n * markets.\n */\ncontract LiquidatorProxyV1WithAmm is ReentrancyGuard, LiquidatorProxyHelper {\n using Math for uint256;\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 = \"LiquidatorProxyV1WithAmm\";\n\n // ============ Structs ============\n\n struct Constants {\n IDolomiteMargin dolomiteMargin;\n Account.Info solidAccount;\n Account.Info liquidAccount;\n MarketInfo[] markets;\n uint256[] liquidMarkets;\n IExpiry expiryProxy;\n uint32 expiry;\n }\n\n struct LiquidatorProxyWithAmmCache {\n // mutable\n uint256 toLiquidate;\n // The amount of heldMarket the solidAccount will receive. Includes the liquidation reward.\n uint256 solidHeldUpdateWithReward;\n Types.Wei solidHeldWei;\n Types.Wei liquidHeldWei;\n Types.Wei liquidOwedWei;\n\n // immutable\n uint256 heldMarket;\n uint256 owedMarket;\n uint256 heldPrice;\n uint256 owedPrice;\n uint256 owedPriceAdj;\n }\n\n // ============ Events ============\n\n /**\n * @param solidAccountOwner The liquidator's address\n * @param solidAccountOwner The liquidator's account number\n * @param heldMarket The held market (collateral) that will be received by the liquidator\n * @param heldDeltaWeiWithReward The amount of heldMarket the liquidator will receive, including the reward\n * (positive number)\n * @param profitHeldWei The amount of profit the liquidator will realize by performing the liquidation\n * and atomically selling off the collateral. Can be negative or positive.\n * @param owedMarket The debt market that will be received by the liquidator\n * @param owedDeltaWei The amount of owedMarket that will be received by the liquidator (negative\n * number)\n */\n event LogLiquidateWithAmm(\n address indexed solidAccountOwner,\n uint solidAccountNumber,\n uint heldMarket,\n uint heldDeltaWeiWithReward,\n Types.Wei profitHeldWei, // calculated as `heldWeiWithReward - soldHeldWeiToBreakEven`\n uint owedMarket,\n uint owedDeltaWei\n );\n\n // ============ Storage ============\n\n IDolomiteMargin DOLOMITE_MARGIN;\n DolomiteAmmRouterProxy ROUTER_PROXY;\n IExpiry EXPIRY_PROXY;\n\n // ============ Constructor ============\n\n constructor (\n address dolomiteMargin,\n address dolomiteAmmRouterProxy,\n address expiryProxy\n )\n public\n {\n DOLOMITE_MARGIN = IDolomiteMargin(dolomiteMargin);\n ROUTER_PROXY = DolomiteAmmRouterProxy(dolomiteAmmRouterProxy);\n EXPIRY_PROXY = IExpiry(expiryProxy);\n }\n\n // ============ Public Functions ============\n\n /**\n * Liquidate liquidAccount using solidAccount. This contract and the msg.sender to this contract\n * must both be operators for the solidAccount.\n *\n * @param solidAccount The account that will do the liquidating\n * @param liquidAccount The account that will be liquidated\n * @param owedMarket The owed market whose borrowed value will be added to `toLiquidate`\n * @param heldMarket The held market whose collateral will be recovered to take on the debt of\n * `owedMarket`\n * @param tokenPath The path through which the trade will be routed to recover the collateral\n * @param expiry The time at which the position expires, if this liquidation is for closing\n * an expired position. Else, 0.\n * @param minOwedOutputAmount The minimum amount that should be outputted by the trade from heldWei to\n * owedWei. Used to prevent sandwiching and mem-pool other attacks. Only used\n * if `revertOnFailToSellCollateral` is set to `false` and the collateral\n * cannot cover the `liquidAccount`'s debt.\n * @param revertOnFailToSellCollateral True to revert the transaction completely if all collateral from the\n * liquidation cannot repay the owed debt. False to swallow the error and sell\n * whatever is possible. If set to false, the liquidator must have sufficient\n * assets to be prevent becoming liquidated or under-collateralized.\n */\n function liquidate(\n Account.Info memory solidAccount,\n Account.Info memory liquidAccount,\n uint256 owedMarket,\n uint256 heldMarket,\n address[] memory tokenPath,\n uint expiry,\n uint minOwedOutputAmount,\n bool revertOnFailToSellCollateral\n )\n public\n nonReentrant\n {\n Require.that(\n owedMarket != heldMarket,\n FILE,\n \"owedMarket equals heldMarket\",\n owedMarket,\n heldMarket\n );\n\n Require.that(\n !DOLOMITE_MARGIN.getAccountPar(liquidAccount, owedMarket).isPositive(),\n FILE,\n \"owed market cannot be positive\",\n owedMarket\n );\n\n Require.that(\n DOLOMITE_MARGIN.getAccountPar(liquidAccount, heldMarket).isPositive(),\n FILE,\n \"held market cannot be negative\",\n heldMarket\n );\n\n Require.that(\n uint32(expiry) == expiry,\n FILE,\n \"expiry overflow\",\n expiry\n );\n\n // put all values that will not change into a single struct\n Constants memory constants;\n constants.dolomiteMargin = DOLOMITE_MARGIN;\n constants.solidAccount = solidAccount;\n constants.liquidAccount = liquidAccount;\n constants.liquidMarkets = constants.dolomiteMargin.getAccountMarketsWithNonZeroBalances(liquidAccount);\n constants.markets = getMarketInfos(\n constants.dolomiteMargin,\n constants.dolomiteMargin.getAccountMarketsWithNonZeroBalances(solidAccount),\n constants.liquidMarkets\n );\n constants.expiryProxy = expiry > 0 ? EXPIRY_PROXY: IExpiry(address(0));\n constants.expiry = uint32(expiry);\n\n LiquidatorProxyWithAmmCache memory cache = initializeCache(\n constants,\n heldMarket,\n owedMarket\n );\n\n // validate the msg.sender and that the liquidAccount can be liquidated\n checkRequirements(\n constants,\n heldMarket,\n owedMarket,\n tokenPath\n );\n\n // get the max liquidation amount\n calculateMaxLiquidationAmount(cache);\n\n // if nothing to liquidate, do nothing\n Require.that(\n cache.toLiquidate != 0,\n FILE,\n \"nothing to liquidate\"\n );\n\n uint totalSolidHeldWei = cache.solidHeldUpdateWithReward;\n if (cache.solidHeldWei.sign) {\n // If the solid account has held wei, add the amount the solid account will receive from liquidation to its\n // total held wei\n // We do this so we can accurately track how much the solid account has (and will have after the swap), in\n // case we need to input it exactly to Router#getParamsForSwapExactTokensForTokens\n totalSolidHeldWei = totalSolidHeldWei.add(cache.solidHeldWei.value);\n }\n\n (\n Account.Info[] memory accounts,\n Actions.ActionArgs[] memory actions\n ) = ROUTER_PROXY.getParamsForSwapTokensForExactTokens(\n constants.solidAccount.owner,\n constants.solidAccount.number,\n uint(- 1), // maxInputWei\n cache.toLiquidate, // the amount of owedMarket that needs to be repaid. Exact output amount\n tokenPath\n );\n\n if (cache.solidHeldUpdateWithReward >= actions[0].amount.value) {\n uint profit = cache.solidHeldUpdateWithReward.sub(actions[0].amount.value);\n uint _owedMarket = owedMarket; // used to prevent the \"stack too deep\" error\n emit LogLiquidateWithAmm(\n constants.solidAccount.owner,\n constants.solidAccount.number,\n heldMarket,\n cache.solidHeldUpdateWithReward,\n Types.Wei(true, profit),\n _owedMarket,\n cache.toLiquidate\n );\n } else {\n Require.that(\n !revertOnFailToSellCollateral,\n FILE,\n \"totalSolidHeldWei is too small\",\n totalSolidHeldWei,\n actions[0].amount.value\n );\n\n // This value needs to be calculated before `actions` is overwritten below with the new swap parameters\n uint profit = actions[0].amount.value.sub(cache.solidHeldUpdateWithReward);\n (accounts, actions) = ROUTER_PROXY.getParamsForSwapExactTokensForTokens(\n constants.solidAccount.owner,\n constants.solidAccount.number,\n totalSolidHeldWei, // inputWei\n minOwedOutputAmount,\n tokenPath\n );\n\n uint _owedMarket = owedMarket; // used to prevent the \"stack too deep\" error\n emit LogLiquidateWithAmm(\n constants.solidAccount.owner,\n constants.solidAccount.number,\n heldMarket,\n cache.solidHeldUpdateWithReward,\n Types.Wei(false, profit),\n _owedMarket,\n cache.toLiquidate\n );\n }\n\n accounts = constructAccountsArray(constants, accounts);\n\n // execute the liquidations\n constants.dolomiteMargin.operate(\n accounts,\n constructActionsArray(constants, cache, accounts, actions) //solium-disable-line arg-overflow\n );\n }\n\n // ============ Calculation Functions ============\n\n /**\n * Calculate the additional owedAmount that can be liquidated until the collateralization of the\n * liquidator account reaches the minLiquidatorRatio. By this point, the cache will be set such\n * that the amount of owedMarket is non-positive and the amount of heldMarket is non-negative.\n */\n function calculateMaxLiquidationAmount(\n LiquidatorProxyWithAmmCache memory cache\n )\n private\n pure\n {\n uint liquidHeldValue = cache.heldPrice.mul(cache.liquidHeldWei.value);\n uint liquidOwedValue = cache.owedPriceAdj.mul(cache.liquidOwedWei.value);\n if (liquidHeldValue <= liquidOwedValue) {\n // The user is under-collateralized; there is no reward left to give\n cache.solidHeldUpdateWithReward = cache.liquidHeldWei.value;\n cache.toLiquidate = Math.getPartialRoundUp(cache.liquidHeldWei.value, cache.heldPrice, cache.owedPriceAdj);\n } else {\n cache.solidHeldUpdateWithReward = Math.getPartial(\n cache.liquidOwedWei.value,\n cache.owedPriceAdj,\n cache.heldPrice\n );\n cache.toLiquidate = cache.liquidOwedWei.value;\n }\n }\n\n // ============ Helper Functions ============\n\n /**\n * Make some basic checks before attempting to liquidate an account.\n * - Require that the msg.sender has the permission to use the liquidator account\n * - Require that the liquid account is liquidatable based on the accounts global value (all assets held and owed,\n * not just what's being liquidated)\n */\n function checkRequirements(\n Constants memory constants,\n uint256 heldMarket,\n uint256 owedMarket,\n address[] memory tokenPath\n )\n private\n view\n {\n // check credentials for msg.sender\n Require.that(\n constants.solidAccount.owner == msg.sender\n || constants.dolomiteMargin.getIsLocalOperator(constants.solidAccount.owner, msg.sender),\n FILE,\n \"Sender not operator\",\n constants.solidAccount.owner\n );\n\n Require.that(\n constants.dolomiteMargin.getMarketIdByTokenAddress(tokenPath[0]) == heldMarket,\n FILE,\n \"0-index token path incorrect\",\n tokenPath[0]\n );\n\n Require.that(\n constants.dolomiteMargin.getMarketIdByTokenAddress(tokenPath[tokenPath.length - 1]) == owedMarket,\n FILE,\n \"last-index token path incorrect\",\n tokenPath[tokenPath.length - 1]\n );\n\n if (constants.expiry == 0) {\n // user is getting liquidated, not expired. Check liquid account is indeed liquid\n (\n Monetary.Value memory liquidSupplyValue,\n Monetary.Value memory liquidBorrowValue\n ) = getAdjustedAccountValues(\n constants.dolomiteMargin,\n constants.markets,\n constants.liquidAccount,\n constants.liquidMarkets\n );\n Require.that(\n liquidSupplyValue.value != 0,\n FILE,\n \"Liquid account no supply\"\n );\n Require.that(\n constants.dolomiteMargin.getAccountStatus(constants.liquidAccount) == Account.Status.Liquid ||\n !isCollateralized(\n liquidSupplyValue.value,\n liquidBorrowValue.value,\n constants.dolomiteMargin.getMarginRatio()\n ),\n FILE,\n \"Liquid account not liquidatable\"\n );\n } else {\n // check the expiration is valid; to get here we already know constants.expiry != 0\n uint expiry = constants.expiryProxy.getExpiry(constants.liquidAccount, owedMarket);\n Require.that(\n expiry == constants.expiry,\n FILE,\n \"expiry mismatch\",\n expiry,\n constants.expiry\n );\n Require.that(\n expiry <= Time.currentTime(),\n FILE,\n \"Borrow not yet expired\",\n expiry\n );\n }\n }\n\n /**\n * Returns true if the supplyValue over-collateralizes the borrowValue by the ratio.\n */\n function isCollateralized(\n uint256 supplyValue,\n uint256 borrowValue,\n Decimal.D256 memory ratio\n )\n private\n pure\n returns (bool)\n {\n uint256 requiredMargin = Decimal.mul(borrowValue, ratio);\n return supplyValue >= borrowValue.add(requiredMargin);\n }\n\n // ============ Getter Functions ============\n\n /**\n * Pre-populates cache values for some pair of markets.\n */\n function initializeCache(\n Constants memory constants,\n uint256 heldMarket,\n uint256 owedMarket\n )\n private\n view\n returns (LiquidatorProxyWithAmmCache memory)\n {\n MarketInfo memory heldMarketInfo = binarySearch(constants.markets, heldMarket);\n MarketInfo memory owedMarketInfo = binarySearch(constants.markets, owedMarket);\n uint256 heldPrice = heldMarketInfo.price.value;\n uint256 owedPrice = owedMarketInfo.price.value;\n\n uint256 owedPriceAdj;\n if (constants.expiry > 0) {\n (, Monetary.Price memory owedPricePrice) = constants.expiryProxy.getSpreadAdjustedPrices(\n heldMarket,\n owedMarket,\n constants.expiry\n );\n owedPriceAdj = owedPricePrice.value;\n } else {\n owedPriceAdj = Decimal.mul(\n owedPrice,\n Decimal.onePlus(constants.dolomiteMargin.getLiquidationSpreadForPair(heldMarket, owedMarket))\n );\n }\n\n return LiquidatorProxyWithAmmCache({\n toLiquidate: 0,\n solidHeldUpdateWithReward: 0,\n solidHeldWei: Interest.parToWei(\n constants.dolomiteMargin.getAccountPar(constants.solidAccount, heldMarket),\n heldMarketInfo.index\n ),\n liquidHeldWei: Interest.parToWei(\n constants.dolomiteMargin.getAccountPar(constants.liquidAccount, heldMarket),\n heldMarketInfo.index\n ),\n liquidOwedWei: Interest.parToWei(\n constants.dolomiteMargin.getAccountPar(constants.liquidAccount, owedMarket),\n owedMarketInfo.index\n ),\n heldMarket: heldMarket,\n owedMarket: owedMarket,\n heldPrice: heldPrice,\n owedPrice: owedPrice,\n owedPriceAdj: owedPriceAdj\n });\n }\n\n // ============ Operation-Construction Functions ============\n\n function constructAccountsArray(\n Constants memory constants,\n Account.Info[] memory accountsForTrade\n )\n private\n pure\n returns (Account.Info[] memory)\n {\n Account.Info[] memory accounts = new Account.Info[](accountsForTrade.length + 1);\n for (uint i = 0; i < accountsForTrade.length; i++) {\n accounts[i] = accountsForTrade[i];\n }\n assert(\n accounts[0].owner == constants.solidAccount.owner &&\n accounts[0].number == constants.solidAccount.number\n );\n\n accounts[accounts.length - 1] = constants.liquidAccount;\n return accounts;\n }\n\n function constructActionsArray(\n Constants memory constants,\n LiquidatorProxyWithAmmCache memory cache,\n Account.Info[] memory accounts,\n Actions.ActionArgs[] memory actionsForTrade\n )\n private\n pure\n returns (Actions.ActionArgs[] memory)\n {\n Actions.ActionArgs[] memory actions = new Actions.ActionArgs[](actionsForTrade.length + 1);\n\n if (constants.expiry > 0) {\n // First action is a trade for closing the expired account\n // accountId is solidAccount; otherAccountId is liquidAccount\n actions[0] = Actions.ActionArgs({\n actionType: Actions.ActionType.Trade,\n accountId: 0,\n amount: Types.AssetAmount({\n sign: true,\n denomination: Types.AssetDenomination.Wei,\n ref: Types.AssetReference.Delta,\n value: cache.toLiquidate\n }),\n primaryMarketId: cache.owedMarket,\n secondaryMarketId: cache.heldMarket,\n otherAddress: address(constants.expiryProxy),\n otherAccountId: accounts.length - 1,\n data: abi.encode(cache.owedMarket, constants.expiry)\n });\n } else {\n // First action is a liquidation\n // accountId is solidAccount; otherAccountId is liquidAccount\n actions[0] = Actions.ActionArgs({\n actionType: Actions.ActionType.Liquidate,\n accountId: 0,\n amount: Types.AssetAmount({\n sign: true,\n denomination: Types.AssetDenomination.Wei,\n ref: Types.AssetReference.Delta,\n value: cache.toLiquidate\n }),\n primaryMarketId: cache.owedMarket,\n secondaryMarketId: cache.heldMarket,\n otherAddress: address(0),\n otherAccountId: accounts.length - 1,\n data: new bytes(0)\n });\n }\n\n for (uint i = 0; i < actionsForTrade.length; i++) {\n actions[i + 1] = actionsForTrade[i];\n }\n\n return actions;\n }\n}\n",
|
|
168
|
-
"sourcePath": "/
|
|
168
|
+
"sourcePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/proxies/LiquidatorProxyV1WithAmm.sol",
|
|
169
169
|
"ast": {
|
|
170
|
-
"absolutePath": "/
|
|
170
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/proxies/LiquidatorProxyV1WithAmm.sol",
|
|
171
171
|
"exportedSymbols": {
|
|
172
172
|
"LiquidatorProxyV1WithAmm": [
|
|
173
173
|
13977
|
|
@@ -229,7 +229,7 @@
|
|
|
229
229
|
"unitAlias": ""
|
|
230
230
|
},
|
|
231
231
|
{
|
|
232
|
-
"absolutePath": "/
|
|
232
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IDolomiteMargin.sol",
|
|
233
233
|
"file": "../../protocol/interfaces/IDolomiteMargin.sol",
|
|
234
234
|
"id": 12843,
|
|
235
235
|
"nodeType": "ImportDirective",
|
|
@@ -245,7 +245,7 @@
|
|
|
245
245
|
"unitAlias": ""
|
|
246
246
|
},
|
|
247
247
|
{
|
|
248
|
-
"absolutePath": "/
|
|
248
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Account.sol",
|
|
249
249
|
"file": "../../protocol/lib/Account.sol",
|
|
250
250
|
"id": 12845,
|
|
251
251
|
"nodeType": "ImportDirective",
|
|
@@ -261,7 +261,7 @@
|
|
|
261
261
|
"unitAlias": ""
|
|
262
262
|
},
|
|
263
263
|
{
|
|
264
|
-
"absolutePath": "/
|
|
264
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Actions.sol",
|
|
265
265
|
"file": "../../protocol/lib/Actions.sol",
|
|
266
266
|
"id": 12847,
|
|
267
267
|
"nodeType": "ImportDirective",
|
|
@@ -277,7 +277,7 @@
|
|
|
277
277
|
"unitAlias": ""
|
|
278
278
|
},
|
|
279
279
|
{
|
|
280
|
-
"absolutePath": "/
|
|
280
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Decimal.sol",
|
|
281
281
|
"file": "../../protocol/lib/Decimal.sol",
|
|
282
282
|
"id": 12849,
|
|
283
283
|
"nodeType": "ImportDirective",
|
|
@@ -293,7 +293,7 @@
|
|
|
293
293
|
"unitAlias": ""
|
|
294
294
|
},
|
|
295
295
|
{
|
|
296
|
-
"absolutePath": "/
|
|
296
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Interest.sol",
|
|
297
297
|
"file": "../../protocol/lib/Interest.sol",
|
|
298
298
|
"id": 12851,
|
|
299
299
|
"nodeType": "ImportDirective",
|
|
@@ -309,7 +309,7 @@
|
|
|
309
309
|
"unitAlias": ""
|
|
310
310
|
},
|
|
311
311
|
{
|
|
312
|
-
"absolutePath": "/
|
|
312
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Math.sol",
|
|
313
313
|
"file": "../../protocol/lib/Math.sol",
|
|
314
314
|
"id": 12853,
|
|
315
315
|
"nodeType": "ImportDirective",
|
|
@@ -325,7 +325,7 @@
|
|
|
325
325
|
"unitAlias": ""
|
|
326
326
|
},
|
|
327
327
|
{
|
|
328
|
-
"absolutePath": "/
|
|
328
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Monetary.sol",
|
|
329
329
|
"file": "../../protocol/lib/Monetary.sol",
|
|
330
330
|
"id": 12855,
|
|
331
331
|
"nodeType": "ImportDirective",
|
|
@@ -341,7 +341,7 @@
|
|
|
341
341
|
"unitAlias": ""
|
|
342
342
|
},
|
|
343
343
|
{
|
|
344
|
-
"absolutePath": "/
|
|
344
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Require.sol",
|
|
345
345
|
"file": "../../protocol/lib/Require.sol",
|
|
346
346
|
"id": 12857,
|
|
347
347
|
"nodeType": "ImportDirective",
|
|
@@ -357,7 +357,7 @@
|
|
|
357
357
|
"unitAlias": ""
|
|
358
358
|
},
|
|
359
359
|
{
|
|
360
|
-
"absolutePath": "/
|
|
360
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Time.sol",
|
|
361
361
|
"file": "../../protocol/lib/Time.sol",
|
|
362
362
|
"id": 12859,
|
|
363
363
|
"nodeType": "ImportDirective",
|
|
@@ -373,7 +373,7 @@
|
|
|
373
373
|
"unitAlias": ""
|
|
374
374
|
},
|
|
375
375
|
{
|
|
376
|
-
"absolutePath": "/
|
|
376
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Types.sol",
|
|
377
377
|
"file": "../../protocol/lib/Types.sol",
|
|
378
378
|
"id": 12861,
|
|
379
379
|
"nodeType": "ImportDirective",
|
|
@@ -389,7 +389,7 @@
|
|
|
389
389
|
"unitAlias": ""
|
|
390
390
|
},
|
|
391
391
|
{
|
|
392
|
-
"absolutePath": "/
|
|
392
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/helpers/LiquidatorProxyHelper.sol",
|
|
393
393
|
"file": "../helpers/LiquidatorProxyHelper.sol",
|
|
394
394
|
"id": 12863,
|
|
395
395
|
"nodeType": "ImportDirective",
|
|
@@ -405,7 +405,7 @@
|
|
|
405
405
|
"unitAlias": ""
|
|
406
406
|
},
|
|
407
407
|
{
|
|
408
|
-
"absolutePath": "/
|
|
408
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/IExpiry.sol",
|
|
409
409
|
"file": "../interfaces/IExpiry.sol",
|
|
410
410
|
"id": 12865,
|
|
411
411
|
"nodeType": "ImportDirective",
|
|
@@ -421,7 +421,7 @@
|
|
|
421
421
|
"unitAlias": ""
|
|
422
422
|
},
|
|
423
423
|
{
|
|
424
|
-
"absolutePath": "/
|
|
424
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/proxies/DolomiteAmmRouterProxy.sol",
|
|
425
425
|
"file": "./DolomiteAmmRouterProxy.sol",
|
|
426
426
|
"id": 12867,
|
|
427
427
|
"nodeType": "ImportDirective",
|
|
@@ -16182,7 +16182,7 @@
|
|
|
16182
16182
|
"src": "603:21011:30"
|
|
16183
16183
|
},
|
|
16184
16184
|
"legacyAST": {
|
|
16185
|
-
"absolutePath": "/
|
|
16185
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/proxies/LiquidatorProxyV1WithAmm.sol",
|
|
16186
16186
|
"exportedSymbols": {
|
|
16187
16187
|
"LiquidatorProxyV1WithAmm": [
|
|
16188
16188
|
13977
|
|
@@ -16244,7 +16244,7 @@
|
|
|
16244
16244
|
"unitAlias": ""
|
|
16245
16245
|
},
|
|
16246
16246
|
{
|
|
16247
|
-
"absolutePath": "/
|
|
16247
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IDolomiteMargin.sol",
|
|
16248
16248
|
"file": "../../protocol/interfaces/IDolomiteMargin.sol",
|
|
16249
16249
|
"id": 12843,
|
|
16250
16250
|
"nodeType": "ImportDirective",
|
|
@@ -16260,7 +16260,7 @@
|
|
|
16260
16260
|
"unitAlias": ""
|
|
16261
16261
|
},
|
|
16262
16262
|
{
|
|
16263
|
-
"absolutePath": "/
|
|
16263
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Account.sol",
|
|
16264
16264
|
"file": "../../protocol/lib/Account.sol",
|
|
16265
16265
|
"id": 12845,
|
|
16266
16266
|
"nodeType": "ImportDirective",
|
|
@@ -16276,7 +16276,7 @@
|
|
|
16276
16276
|
"unitAlias": ""
|
|
16277
16277
|
},
|
|
16278
16278
|
{
|
|
16279
|
-
"absolutePath": "/
|
|
16279
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Actions.sol",
|
|
16280
16280
|
"file": "../../protocol/lib/Actions.sol",
|
|
16281
16281
|
"id": 12847,
|
|
16282
16282
|
"nodeType": "ImportDirective",
|
|
@@ -16292,7 +16292,7 @@
|
|
|
16292
16292
|
"unitAlias": ""
|
|
16293
16293
|
},
|
|
16294
16294
|
{
|
|
16295
|
-
"absolutePath": "/
|
|
16295
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Decimal.sol",
|
|
16296
16296
|
"file": "../../protocol/lib/Decimal.sol",
|
|
16297
16297
|
"id": 12849,
|
|
16298
16298
|
"nodeType": "ImportDirective",
|
|
@@ -16308,7 +16308,7 @@
|
|
|
16308
16308
|
"unitAlias": ""
|
|
16309
16309
|
},
|
|
16310
16310
|
{
|
|
16311
|
-
"absolutePath": "/
|
|
16311
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Interest.sol",
|
|
16312
16312
|
"file": "../../protocol/lib/Interest.sol",
|
|
16313
16313
|
"id": 12851,
|
|
16314
16314
|
"nodeType": "ImportDirective",
|
|
@@ -16324,7 +16324,7 @@
|
|
|
16324
16324
|
"unitAlias": ""
|
|
16325
16325
|
},
|
|
16326
16326
|
{
|
|
16327
|
-
"absolutePath": "/
|
|
16327
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Math.sol",
|
|
16328
16328
|
"file": "../../protocol/lib/Math.sol",
|
|
16329
16329
|
"id": 12853,
|
|
16330
16330
|
"nodeType": "ImportDirective",
|
|
@@ -16340,7 +16340,7 @@
|
|
|
16340
16340
|
"unitAlias": ""
|
|
16341
16341
|
},
|
|
16342
16342
|
{
|
|
16343
|
-
"absolutePath": "/
|
|
16343
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Monetary.sol",
|
|
16344
16344
|
"file": "../../protocol/lib/Monetary.sol",
|
|
16345
16345
|
"id": 12855,
|
|
16346
16346
|
"nodeType": "ImportDirective",
|
|
@@ -16356,7 +16356,7 @@
|
|
|
16356
16356
|
"unitAlias": ""
|
|
16357
16357
|
},
|
|
16358
16358
|
{
|
|
16359
|
-
"absolutePath": "/
|
|
16359
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Require.sol",
|
|
16360
16360
|
"file": "../../protocol/lib/Require.sol",
|
|
16361
16361
|
"id": 12857,
|
|
16362
16362
|
"nodeType": "ImportDirective",
|
|
@@ -16372,7 +16372,7 @@
|
|
|
16372
16372
|
"unitAlias": ""
|
|
16373
16373
|
},
|
|
16374
16374
|
{
|
|
16375
|
-
"absolutePath": "/
|
|
16375
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Time.sol",
|
|
16376
16376
|
"file": "../../protocol/lib/Time.sol",
|
|
16377
16377
|
"id": 12859,
|
|
16378
16378
|
"nodeType": "ImportDirective",
|
|
@@ -16388,7 +16388,7 @@
|
|
|
16388
16388
|
"unitAlias": ""
|
|
16389
16389
|
},
|
|
16390
16390
|
{
|
|
16391
|
-
"absolutePath": "/
|
|
16391
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Types.sol",
|
|
16392
16392
|
"file": "../../protocol/lib/Types.sol",
|
|
16393
16393
|
"id": 12861,
|
|
16394
16394
|
"nodeType": "ImportDirective",
|
|
@@ -16404,7 +16404,7 @@
|
|
|
16404
16404
|
"unitAlias": ""
|
|
16405
16405
|
},
|
|
16406
16406
|
{
|
|
16407
|
-
"absolutePath": "/
|
|
16407
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/helpers/LiquidatorProxyHelper.sol",
|
|
16408
16408
|
"file": "../helpers/LiquidatorProxyHelper.sol",
|
|
16409
16409
|
"id": 12863,
|
|
16410
16410
|
"nodeType": "ImportDirective",
|
|
@@ -16420,7 +16420,7 @@
|
|
|
16420
16420
|
"unitAlias": ""
|
|
16421
16421
|
},
|
|
16422
16422
|
{
|
|
16423
|
-
"absolutePath": "/
|
|
16423
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/IExpiry.sol",
|
|
16424
16424
|
"file": "../interfaces/IExpiry.sol",
|
|
16425
16425
|
"id": 12865,
|
|
16426
16426
|
"nodeType": "ImportDirective",
|
|
@@ -16436,7 +16436,7 @@
|
|
|
16436
16436
|
"unitAlias": ""
|
|
16437
16437
|
},
|
|
16438
16438
|
{
|
|
16439
|
-
"absolutePath": "/
|
|
16439
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/proxies/DolomiteAmmRouterProxy.sol",
|
|
16440
16440
|
"file": "./DolomiteAmmRouterProxy.sol",
|
|
16441
16441
|
"id": 12867,
|
|
16442
16442
|
"nodeType": "ImportDirective",
|
|
@@ -32203,55 +32203,6 @@
|
|
|
32203
32203
|
"networks": {
|
|
32204
32204
|
"1001": {
|
|
32205
32205
|
"events": {
|
|
32206
|
-
"0x60e0d0304d6eca6d05e0c5b623d006d1f6d54df45904f6303f163c587c74e9d7": {
|
|
32207
|
-
"anonymous": false,
|
|
32208
|
-
"inputs": [
|
|
32209
|
-
{
|
|
32210
|
-
"indexed": false,
|
|
32211
|
-
"internalType": "address",
|
|
32212
|
-
"name": "solidAccountOwner",
|
|
32213
|
-
"type": "address"
|
|
32214
|
-
},
|
|
32215
|
-
{
|
|
32216
|
-
"indexed": false,
|
|
32217
|
-
"internalType": "uint256",
|
|
32218
|
-
"name": "solidAccountNumber",
|
|
32219
|
-
"type": "uint256"
|
|
32220
|
-
},
|
|
32221
|
-
{
|
|
32222
|
-
"indexed": false,
|
|
32223
|
-
"internalType": "uint256",
|
|
32224
|
-
"name": "heldMarket",
|
|
32225
|
-
"type": "uint256"
|
|
32226
|
-
},
|
|
32227
|
-
{
|
|
32228
|
-
"indexed": false,
|
|
32229
|
-
"internalType": "uint256",
|
|
32230
|
-
"name": "heldWeiWithReward",
|
|
32231
|
-
"type": "uint256"
|
|
32232
|
-
},
|
|
32233
|
-
{
|
|
32234
|
-
"indexed": false,
|
|
32235
|
-
"internalType": "uint256",
|
|
32236
|
-
"name": "owedMarket",
|
|
32237
|
-
"type": "uint256"
|
|
32238
|
-
},
|
|
32239
|
-
{
|
|
32240
|
-
"indexed": false,
|
|
32241
|
-
"internalType": "uint256",
|
|
32242
|
-
"name": "owedHeldWei",
|
|
32243
|
-
"type": "uint256"
|
|
32244
|
-
},
|
|
32245
|
-
{
|
|
32246
|
-
"indexed": false,
|
|
32247
|
-
"internalType": "bool",
|
|
32248
|
-
"name": "isProfitable",
|
|
32249
|
-
"type": "bool"
|
|
32250
|
-
}
|
|
32251
|
-
],
|
|
32252
|
-
"name": "LogArbWithAmm",
|
|
32253
|
-
"type": "event"
|
|
32254
|
-
},
|
|
32255
32206
|
"0xb1089a9daef245da460e4459ebcc0074675591ef99007db13c724d4f8a087554": {
|
|
32256
32207
|
"anonymous": false,
|
|
32257
32208
|
"inputs": [
|
|
@@ -32312,15 +32263,8 @@
|
|
|
32312
32263
|
],
|
|
32313
32264
|
"name": "LogLiquidateWithAmm",
|
|
32314
32265
|
"type": "event"
|
|
32315
|
-
}
|
|
32316
|
-
|
|
32317
|
-
"links": {},
|
|
32318
|
-
"address": "0x4cFB3F70BF6a80397C2e634e5bDd85BC0bb189EE",
|
|
32319
|
-
"transactionHash": "0xcab1a513a0d383a6da44e78f6328003a02c6d6469483dcaf8aa8c66dbd3dd47c"
|
|
32320
|
-
},
|
|
32321
|
-
"80001": {
|
|
32322
|
-
"events": {
|
|
32323
|
-
"0xb1089a9daef245da460e4459ebcc0074675591ef99007db13c724d4f8a087554": {
|
|
32266
|
+
},
|
|
32267
|
+
"0xd830e4105186a902ac3d9e3080ccf4c3afa7191753281b0abdb147a603b6d4dd": {
|
|
32324
32268
|
"anonymous": false,
|
|
32325
32269
|
"inputs": [
|
|
32326
32270
|
{
|
|
@@ -32347,18 +32291,6 @@
|
|
|
32347
32291
|
"name": "heldDeltaWeiWithReward",
|
|
32348
32292
|
"type": "uint256"
|
|
32349
32293
|
},
|
|
32350
|
-
{
|
|
32351
|
-
"indexed": false,
|
|
32352
|
-
"internalType": "uint256",
|
|
32353
|
-
"name": "owedMarket",
|
|
32354
|
-
"type": "uint256"
|
|
32355
|
-
},
|
|
32356
|
-
{
|
|
32357
|
-
"indexed": false,
|
|
32358
|
-
"internalType": "uint256",
|
|
32359
|
-
"name": "owedDeltaWei",
|
|
32360
|
-
"type": "uint256"
|
|
32361
|
-
},
|
|
32362
32294
|
{
|
|
32363
32295
|
"components": [
|
|
32364
32296
|
{
|
|
@@ -32376,6 +32308,18 @@
|
|
|
32376
32308
|
"internalType": "struct Types.Wei",
|
|
32377
32309
|
"name": "profitHeldWei",
|
|
32378
32310
|
"type": "tuple"
|
|
32311
|
+
},
|
|
32312
|
+
{
|
|
32313
|
+
"indexed": false,
|
|
32314
|
+
"internalType": "uint256",
|
|
32315
|
+
"name": "owedMarket",
|
|
32316
|
+
"type": "uint256"
|
|
32317
|
+
},
|
|
32318
|
+
{
|
|
32319
|
+
"indexed": false,
|
|
32320
|
+
"internalType": "uint256",
|
|
32321
|
+
"name": "owedDeltaWei",
|
|
32322
|
+
"type": "uint256"
|
|
32379
32323
|
}
|
|
32380
32324
|
],
|
|
32381
32325
|
"name": "LogLiquidateWithAmm",
|
|
@@ -32383,12 +32327,12 @@
|
|
|
32383
32327
|
}
|
|
32384
32328
|
},
|
|
32385
32329
|
"links": {},
|
|
32386
|
-
"address": "
|
|
32387
|
-
"transactionHash": "
|
|
32330
|
+
"address": "0x4cFB3F70BF6a80397C2e634e5bDd85BC0bb189EE",
|
|
32331
|
+
"transactionHash": "0x1b415726b3ad4bb5bb4e581754ad47b1837dfdbe1164e335159f444b20edd63f"
|
|
32388
32332
|
}
|
|
32389
32333
|
},
|
|
32390
32334
|
"schemaVersion": "3.0.23",
|
|
32391
|
-
"updatedAt": "2022-02-
|
|
32335
|
+
"updatedAt": "2022-02-07T07:18:44.996Z",
|
|
32392
32336
|
"devdoc": {
|
|
32393
32337
|
"author": "Dolomite * Contract for liquidating other accounts in DolomiteMargin and atomically selling off collateral via Dolomite AMM markets.",
|
|
32394
32338
|
"methods": {
|