UNPKG

@dolomite-exchange/dolomite-margin

Version:

Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol

364 lines 424 kB
{ "contractName": "TestIsolationModeWrapperTrader", "abi": [ { "inputs": [ { "internalType": "address", "name": "_inputToken", "type": "address" }, { "internalType": "address", "name": "_outputToken", "type": "address" }, { "internalType": "address", "name": "_dolomiteMargin", "type": "address" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "constant": true, "inputs": [], "name": "ACTIONS_LENGTH", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "DOLOMITE_MARGIN", "outputs": [ { "internalType": "contract IDolomiteMargin", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "INPUT_TOKEN", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "OUTPUT_TOKEN", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "token", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "_inputToken", "type": "address" } ], "name": "isValidInputToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "actionsLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "pure", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "address", "name": "_outputToken", "type": "address" }, { "internalType": "address", "name": "_inputToken", "type": "address" }, { "internalType": "uint256", "name": "_inputAmount", "type": "uint256" }, { "internalType": "bytes", "name": "_orderData", "type": "bytes" } ], "name": "exchange", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "_makerToken", "type": "address" }, { "internalType": "address", "name": "_takerToken", "type": "address" }, { "internalType": "uint256", "name": "_desiredMakerToken", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "getExchangeCost", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "components": [ { "internalType": "uint256", "name": "primaryAccountId", "type": "uint256" }, { "internalType": "uint256", "name": "otherAccountId", "type": "uint256" }, { "internalType": "address", "name": "primaryAccountOwner", "type": "address" }, { "internalType": "uint256", "name": "primaryAccountNumber", "type": "uint256" }, { "internalType": "address", "name": "otherAccountOwner", "type": "address" }, { "internalType": "uint256", "name": "otherAccountNumber", "type": "uint256" }, { "internalType": "uint256", "name": "outputMarket", "type": "uint256" }, { "internalType": "uint256", "name": "inputMarket", "type": "uint256" }, { "internalType": "uint256", "name": "minOutputAmount", "type": "uint256" }, { "internalType": "uint256", "name": "inputAmount", "type": "uint256" }, { "internalType": "bytes", "name": "orderData", "type": "bytes" } ], "internalType": "struct IIsolationModeWrapperTrader.CreateActionsForWrappingParams", "name": "_params", "type": "tuple" } ], "name": "createActionsForWrapping", "outputs": [ { "components": [ { "internalType": "enum Actions.ActionType", "name": "actionType", "type": "uint8" }, { "internalType": "uint256", "name": "accountId", "type": "uint256" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "enum Types.AssetDenomination", "name": "denomination", "type": "uint8" }, { "internalType": "enum Types.AssetReference", "name": "ref", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Types.AssetAmount", "name": "amount", "type": "tuple" }, { "internalType": "uint256", "name": "primaryMarketId", "type": "uint256" }, { "internalType": "uint256", "name": "secondaryMarketId", "type": "uint256" }, { "internalType": "address", "name": "otherAddress", "type": "address" }, { "internalType": "uint256", "name": "otherAccountId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "internalType": "struct Actions.ActionArgs[]", "name": "", "type": "tuple[]" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_inputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_outputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_dolomiteMargin\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"ACTIONS_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOLOMITE_MARGIN\",\"outputs\":[{\"internalType\":\"contract IDolomiteMargin\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"INPUT_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"OUTPUT_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"actionsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"primaryAccountId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"otherAccountId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"primaryAccountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"primaryAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"otherAccountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"otherAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputMarket\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inputMarket\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minOutputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"orderData\",\"type\":\"bytes\"}],\"internalType\":\"struct IIsolationModeWrapperTrader.CreateActionsForWrappingParams\",\"name\":\"_params\",\"type\":\"tuple\"}],\"name\":\"createActionsForWrapping\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Actions.ActionType\",\"name\":\"actionType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"accountId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"enum Types.AssetDenomination\",\"name\":\"denomination\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.AssetReference\",\"name\":\"ref\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.AssetAmount\",\"name\":\"amount\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"primaryMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryMarketId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"otherAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"otherAccountId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Actions.ActionArgs[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_outputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_inputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_orderData\",\"type\":\"bytes\"}],\"name\":\"exchange\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_makerToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_takerToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_desiredMakerToken\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"getExchangeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_inputToken\",\"type\":\"address\"}],\"name\":\"isValidInputToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestIsolationModeWrapperTrader.sol\":\"TestIsolationModeWrapperTrader\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IExpiry.sol\":{\"keccak256\":\"0xa7b197139e570e823cab42c3b8500c9c5edc8a40110970a7d6fe60f05864ba10\",\"urls\":[\"bzz-raw://4f469be063d8f694c5277650bc53ac2c0d164f62e36c6a9ab7dad126479990a9\",\"dweb:/ipfs/Qme4sTbGi4T2QhsJSweqGzqm5rxQkypy27g1vLy8ipVijV\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IIsolationModeWrapperTrader.sol\":{\"keccak256\":\"0xd228f8ed8b44af8d34d6731434aa6d4146631102ec3402c5731a803393d25a9f\",\"urls\":[\"bzz-raw://186605de708fa3c5075034d0ec4e9cefacd13dd52f22ee0a485a86a4ad92d6fe\",\"dweb:/ipfs/QmcY3411rTWkk8tCGKtj7E94WC3haTbEboY1odjchra6Sn\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/AccountActionLib.sol\":{\"keccak256\":\"0x5488dd7eae5ce96e479445f19301d9dd44d292a2d6739b9da1fe948eeb41edc4\",\"urls\":[\"bzz-raw://06977e07aea4d893db696173f3ee01a84008770c4e0d81fb5eb82af3a597ceaa\",\"dweb:/ipfs/QmYiH8CsXEbHypJ2gN31LnZv2tfzd2RBuSKoRgx2EbBw26\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/AccountBalanceLib.sol\":{\"keccak256\":\"0x76fd16d615fe7cfceaf775b4e6524fd0462606c802b082498c768a7a4ca01a20\",\"urls\":[\"bzz-raw://56068145e300cde1c77c22e38cb753378abf2f0d4613dcb203e33ff101f169e2\",\"dweb:/ipfs/QmXvMzr9n7vzMHdUPgnc58KX4mrbQAqkq4kDETaj5Y55ZY\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IAccountRiskOverrideSetter.sol\":{\"keccak256\":\"0x5b9fde139ddfdaae7b650b3c3f6699e0e44605f0d9d3daadc1622eb06ad4c3f8\",\"urls\":[\"bzz-raw://2dfd5af24b6de63f94519c99fd8777a264d7cd11266fa2d525c7d72d96a9c7cf\",\"dweb:/ipfs/QmPg9fjhbnmBayZMh6yTG79xsK1PWSoAHA5pfwSXfnKKjF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x7e86ed1ed04dc205245db9f4e7cf7cca60c3bfc46c57ade8129a463780647967\",\"urls\":[\"bzz-raw://f8fbd85afd334c12bdccbb6523ebea9172b27b7b4b132c4a48b4b4dd03ceeb2b\",\"dweb:/ipfs/QmU1srfSqBTz3kw7oz1KEzfTUJvphZiE4K8MRZcy9uJjv1\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IExchangeWrapper.sol\":{\"keccak256\":\"0x74799c3fac16738be41e270a70d3f7ad4f75d1dc7e5d8c58f0fe4c6128345112\",\"urls\":[\"bzz-raw://d9602af1001189d199736d17266d5fb34a32f71cd05fbcf4c0f97c0b3a642eee\",\"dweb:/ipfs/QmPto2DkZ1nKqicBMdMkaek7kGSSXqSKnf697h5zuthvsy\"]},\"/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/IOracleSentinel.sol\":{\"keccak256\":\"0xa94499fda55ef112640daed2cb1d06062e72c51c7b925c323b4e0ffa9b456ce5\",\"urls\":[\"bzz-raw://18b4a16acac577590a57f34f7ec6583e3cb35f575c948abb928b308d29cac1ab\",\"dweb:/ipfs/QmR1jLkzj6w7SjrdZ7GVW4V2vofSdMJwzjTqKpeUKABvxu\"]},\"/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\":\"0x2059276ea5e478bd5ac7f2712e7b1b6c85d291c647a54b264909044844828e67\",\"urls\":[\"bzz-raw://f153777051d12131b13a57e5c3af10a2670927cfc7d22c9519ab20c9b4b9bc89\",\"dweb:/ipfs/QmQMP3qS5xDAVGYKDfNkbkSqBKozQGQsGqX4e8VyjRtxPS\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x7b2fcf441c034952dd042b6c8b20b148359db771e7c9ac07d06369560a9f0301\",\"urls\":[\"bzz-raw://84665ee4a780360fe6160d197ba98f0bf0ab0d7c6ad87bfed6226bf2f88d8d30\",\"dweb:/ipfs/QmRDfRdAd8hSXeu4SAeeYKkKoXBhStu7n4uReYBce2JD5Z\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x6d9a641163b2dd25e648c65f5d9e4949a57938e29ddc4c9dddefd74a9964aeef\",\"urls\":[\"bzz-raw://67e5a04ed4055faafbc100d6ccca9c54448ed378a1a8c71171562edda7bcbf7c\",\"dweb:/ipfs/QmYRikK3Xbgiq3UBJkgoo2zNUSSrShVabpRHmQj6iQHhrc\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0xe57c80a7621a77fcb2acb9f883fb5248e71a6dce03bc2db56df0db3fee332950\",\"urls\":[\"bzz-raw://28e221c04629674490b9a0041d4f9a5f15e669dc0cc192a5df6e2c701c36369f\",\"dweb:/ipfs/QmaL3oh8c7v9cx91pB175pyCEuzxnhNTab4UxmBMsDYfUx\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0xd9a348c2b1eec076609ba12bbec6b9c2e4ea135790a7ef4f5411feb050af2144\",\"urls\":[\"bzz-raw://d5bcff29e47d5cd02d7a9966e9f44c46ccbb4f0e4adfc4b0b86646880677db39\",\"dweb:/ipfs/QmRKfJD4FFM1AvTynSFNx1NcDg94o9SAcjz7dvMaJCfecp\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol\":{\"keccak256\":\"0x53f205f6a779d579be29faa9412c806a892b3e605fff092dfd9d14d936fa019f\",\"urls\":[\"bzz-raw://0ff936f89602a63b8e6a4eb4ce8f87673c0f45b7ce29694920905a3f0b5a6a69\",\"dweb:/ipfs/QmbYME9BeEvPC1ndV8EaUDX5fDMghLc3rocNUxFtgHmg8m\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x41a3460e34b7b8635d936e35e6568ceb5354b638f53b884530e0d4875fa0f151\",\"urls\":[\"bzz-raw://d1a5ba866ee95d455afe5075dadd91fc71c2806371f2c1b358a1f67c632bb0df\",\"dweb:/ipfs/QmW4qCjmsG8J3UJv97GwDLDM7wt1K4yLDKAwzWMY7TFYi5\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x141a0ecb4a746f0e5767df4b99dbe33c6362df507ae9d5c02da1c1c17bc26df3\",\"urls\":[\"bzz-raw://9ff03e64a8ce5231acde07788624bf8c7a8ff55d90b157fa32f62fa887a0eff0\",\"dweb:/ipfs/QmUVxxWeE954RDXbmHJAYnHsXcit6rSXGqZUigu8t9oH2z\"]},\"/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\":\"0x05a2a90b41b6a5f42f0a72da63d015fb0b406a9ba2172823352e522e8bf3a606\",\"urls\":[\"bzz-raw://19883f0c6d33266f756ec5c3d17539524aa24b993c46c33f8400801d09373a6c\",\"dweb:/ipfs/QmYX2fwK3vQQDSZLMrc5wMfeb8RWrcC9CGX8XECLty8QDk\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0x9c27f3cd52af28c9b6bca18097b1793f114d08284d78417467d0d05f67e9e2a9\",\"urls\":[\"bzz-raw://d1ed0e7a7f76d59f30572996d4e164ab8fb5b2ec4bfca127983f9e936b904813\",\"dweb:/ipfs/QmePVYbgrY8Yw3Vf76pmEvE9pX916Jaa9we4kjM8tGM4J1\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x87ee8d3c1d6e315a116426d8c8fc6f083e220fd14dda27fad4e8d7cab3dc7305\",\"urls\":[\"bzz-raw://7c20f2c52da682c3b5917fb6a19e81f43699b1d13c62b569ed723f34da72e766\",\"dweb:/ipfs/QmbXWYXi67nHBVNDKYUpo2E9ZaEVcHLvmXQkpYLMm1d5Vm\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0x095b5f8eb3665f6e246200311efc8a654fa3e90f9a1a522e27a4d089e8ab3917\",\"urls\":[\"bzz-raw://5db812b752a03d601d424e6e21be38153477082af0acf51b5c98eefa5553ed18\",\"dweb:/ipfs/QmbE549QUXYTurpx8hSMLBJvuBpfYqyNE6FBCgHJDY8PLf\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xe1bab8c8799d83e86c7a49aaf815d8e3bc8d09562d46d44d921500db5e98de0e\",\"urls\":[\"bzz-raw://8ea3d0cc4fdab6dd9bba545a792170f939b342d8d1a7051c1c6365009af72658\",\"dweb:/ipfs/QmaLJgbavu88eEit6JPqfWnw6NmGBDZfveMXxumgWywBFG\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestIsolationModeWrapperTrader.sol\":{\"keccak256\":\"0x8b521ff45ce61c266ec7cbdb3f129e47189a6e926666a1c6206059584a29d0e3\",\"urls\":[\"bzz-raw://3a09f97e9202bfd1d0151aff9c64393c64d9c15eb5f53f688e03c09efe8d3ce0\",\"dweb:/ipfs/QmSdYSCY7rfPMn4CXCPwuV3GyNe7zVqkQ4u33AvnciB1Wj\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestToken.sol\":{\"keccak256\":\"0xfbf238308c7b72cfc85387bdcf3a88145ab193c82268bed81f6eeea470c8e1bb\",\"urls\":[\"bzz-raw://ee425eb5d26cf169e6fc1ec50c66a59596bb4af77c9b190e5d8b3a0abd26efa1\",\"dweb:/ipfs/QmRKFYpuX7Q3pJ3UuLMcAHJ8SF1Gegp7Q99r2wZo57hDrR\"]},\"@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\"]}},\"version\":1}", "bytecode": "0x60806040523480156200001157600080fd5b5060405162001e7938038062001e7983398101604081905262000034916200008a565b600080546001600160a01b039485166001600160a01b0319918216179091556001805493851693821693909317909255600280549190931691161790556200010a565b80516200008481620000f0565b92915050565b600080600060608486031215620000a057600080fd5b6000620000ae868662000077565b9350506020620000c18682870162000077565b9250506040620000d48682870162000077565b9150509250925092565b60006001600160a01b03821662000084565b620000fb81620000de565b81146200010757600080fd5b50565b611d5f806200011a6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80639f4a129711610076578063c2ac34a41161005b578063c2ac34a414610171578063f3835afb14610179578063fc0c546a14610181576100be565b80639f4a129714610149578063b189111a14610169576100be565b80633a8fdd7d116100a75780633a8fdd7d146100f65780634e2e5580146101165780637d98ebac14610136576100be565b806315c14a4a146100c357806323be76d9146100e1575b600080fd5b6100cb610189565b6040516100d89190611af7565b60405180910390f35b6100e96101a5565b6040516100d89190611aaf565b61010961010436600461161f565b6101c1565b6040516100d89190611b26565b6101296101243660046116bb565b6104f6565b6040516100d89190611ad8565b61010961014436600461157a565b610678565b61015c610157366004611554565b610ace565b6040516100d89190611ae9565b610109610aef565b610109610af4565b6100e9610af9565b6100e9610b15565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60015460009061022e9073ffffffffffffffffffffffffffffffffffffffff8781169116147f5465737449736f6c6174696f6e4d6f64655772617070657254726164657200007f54616b657220746f6b656e206d757374206265204f55545055545f544f4b454e88610b31565b6002546040517f8fae3be100000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638fae3be190610285908a90600401611aaf565b60206040518083038186803b15801561029d57600080fd5b505afa1580156102b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102d5919081019061170e565b6002546040517f8fae3be100000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690638fae3be190610331908a90600401611aaf565b60206040518083038186803b15801561034957600080fd5b505afa15801561035d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610381919081019061170e565b6002546040517f8928378e00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690638928378e906103dd908690600401611b26565b60206040518083038186803b1580156103f557600080fd5b505afa158015610409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061042d91908101906116f0565b516002546040517f8928378e00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690638928378e9061048a908690600401611b26565b60206040518083038186803b1580156104a257600080fd5b505afa1580156104b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104da91908101906116f0565b5190506104e8888383610c36565b9a9950505050505050505050565b60c08101516002546001546040517f8fae3be10000000000000000000000000000000000000000000000000000000081526060936105fa93909273ffffffffffffffffffffffffffffffffffffffff91821692638fae3be19261055d921690600401611aaf565b60206040518083038186803b15801561057557600080fd5b505afa158015610589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105ad919081019061170e565b147f5465737449736f6c6174696f6e4d6f64655772617070657254726164657200007f496e76616c6964206f7574707574206d61726b657400000000000000000000008560c00151610c62565b604080516001808252818301909252606091816020015b6106196112b5565b81526020019060019003908161061157905050905061065883600001518460e001518560c0015130876101200151886101000151896101400151610cc4565b8160008151811061066557fe5b602090810291909101015290505b919050565b6001546000906106e59073ffffffffffffffffffffffffffffffffffffffff8881169116147f5465737449736f6c6174696f6e4d6f64655772617070657254726164657200007f4d616b657220746f6b656e206d757374206265204f55545055545f544f4b454e89610b31565b6002546040517f8fae3be100000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638928378e908290638fae3be190610744908b90600401611aaf565b60206040518083038186803b15801561075c57600080fd5b505afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610794919081019061170e565b6040518263ffffffff1660e01b81526004016107b09190611b26565b60206040518083038186803b1580156107c857600080fd5b505afa1580156107dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061080091908101906116f0565b516002546040517f8fae3be100000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690638928378e908290638fae3be190610865908d90600401611aaf565b60206040518083038186803b15801561087d57600080fd5b505afa158015610891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108b5919081019061170e565b6040518263ffffffff1660e01b81526004016108d19190611b26565b60206040518083038186803b1580156108e957600080fd5b505afa1580156108fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061092191908101906116f0565b5190506000610931838884610c36565b905060006109418688018861172c565b509050610992818310157f5465737449736f6c6174696f6e4d6f64655772617070657254726164657200007f496e73756666696369656e74206f757470757420616d6f756e74000000000000610df6565b506040517fe30443bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a169063e30443bc906109e79030908590600401611abd565b600060405180830381600087803b158015610a0157600080fd5b505af1158015610a15573d6000803e3d6000fd5b50506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c16925063095ea7b39150610a6d908d908590600401611abd565b602060405180830381600087803b158015610a8757600080fd5b505af1158015610a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610abf919081019061169d565b509a9950505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161490565b600190565b600181565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b83610c3057610b3f83610e45565b7f3a20000000000000000000000000000000000000000000000000000000000000610b6984610e45565b7f203c000000000000000000000000000000000000000000000000000000000000610b9385610f1d565b604051610bc99594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001611a51565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610c2791600401611b05565b60405180910390fd5b50505050565b6000610c5882610c4c868663ffffffff61109416565b9063ffffffff6110f116565b90505b9392505050565b83610c3057610c7083610e45565b7f3a20000000000000000000000000000000000000000000000000000000000000610c9a84610e45565b7f203c000000000000000000000000000000000000000000000000000000000000610b9385611133565b610ccc6112b5565b60408051610100810182526004815260208082018b9052825160808101845260008082529293840192909182019081526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8814610d2d576000610d30565b60015b6001811115610d3b57fe5b81526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8814610d6d5787610d70565b60005b81525081526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018484604051602001610dba929190611b34565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905298975050505050505050565b82610e4057610e0482610e45565b7f3a20000000000000000000000000000000000000000000000000000000000000610e2e83610e45565b604051602001610bc993929190611a29565b505050565b60608082604051602001610e599190611a14565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b8015610f025781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110610ec557fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615610efd5760010181529050610673565b610e8c565b5060408051600080825260208201909252905b509392505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b81600081518110610f6957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b81600181518110610faa57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015610f155760028102610ff5600f8516611242565b83826029038151811061100457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350611046600f8516611242565b83826028038151811061105557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101610fdc565b6000826110a3575060006110eb565b828202828482816110b057fe5b04146110e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2790611b16565b90505b92915050565b60006110e883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611264565b606081611174575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610673565b8160005b811561118c57600101600a82049150611178565b6060816040519080825280601f01601f1916602001820160405280156111b9576020820181803883390190505b508593509050815b8015611239577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b8282815181106111ff57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506111c1565b50949350505050565b6000600a82101561125a57506030810160f81b610673565b5060570160f81b90565b6000818361129f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c279190611b05565b5060008385816112ab57fe5b0495945050505050565b6040805161010081018252600080825260208201529081016112d5611314565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b80356110eb81611cf6565b80516110eb81611d0a565b60008083601f84011261136557600080fd5b50813567ffffffffffffffff81111561137d57600080fd5b60208301915083600182028301111561139557600080fd5b9250929050565b600082601f8301126113ad57600080fd5b81356113c06113bb82611b7b565b611b54565b915080825260208301602083018583830111156113dc57600080fd5b6113e7838284611c7f565b50505092915050565b6000610160828403121561140357600080fd5b61140e610160611b54565b9050600061141c848461153e565b825250602061142d8484830161153e565b60208301525060406114418482850161133d565b60408301525060606114558482850161153e565b60608301525060806114698482850161133d565b60808301525060a061147d8482850161153e565b60a08301525060c06114918482850161153e565b60c08301525060e06114a58482850161153e565b60e0830152506101006114ba8482850161153e565b610100830152506101206114d08482850161153e565b6101208301525061014082013567ffffffffffffffff8111156114f257600080fd5b6114fe8482850161139c565b6101408301525092915050565b60006020828403121561151d57600080fd5b6115276020611b54565b905060006115358484611549565b82525092915050565b80356110eb81611d13565b80516110eb81611d13565b60006020828403121561156657600080fd5b6000611572848461133d565b949350505050565b600080600080600080600060c0888a03121561159557600080fd5b60006115a18a8a61133d565b97505060206115b28a828b0161133d565b96505060406115c38a828b0161133d565b95505060606115d48a828b0161133d565b94505060806115e58a828b0161153e565b93505060a088013567ffffffffffffffff81111561160257600080fd5b61160e8a828b01611353565b925092505092959891949750929550565b60008060008060006080868803121561163757600080fd5b6000611643888861133d565b95505060206116548882890161133d565b94505060406116658882890161153e565b935050606086013567ffffffffffffffff81111561168257600080fd5b61168e88828901611353565b92509250509295509295909350565b6000602082840312156116af57600080fd5b60006115728484611348565b6000602082840312156116cd57600080fd5b813567ffffffffffffffff8111156116e457600080fd5b611572848285016113f0565b60006020828403121561170257600080fd5b6000611572848461150b565b60006020828403121561172057600080fd5b60006115728484611549565b6000806040838503121561173f57600080fd5b600061174b858561153e565b925050602083013567ffffffffffffffff81111561176857600080fd5b6117748582860161139c565b9150509250929050565b60006110e8838361191a565b61179381611bd4565b82525050565b60006117a482611bc7565b6117ae8185611bcb565b9350836020820285016117c085611bc1565b8060005b858110156117fa57848403895281516117dd858261177e565b94506117e883611bc1565b60209a909a01999250506001016117c4565b5091979650505050505050565b61179381611bdf565b61179361181c82611be4565b611c2e565b61179361181c82611c09565b61179361181c82611c2e565b600061184482611bc7565b61184e8185611bcb565b935061185e818560208601611c8b565b61186781611cb7565b9093019392505050565b600061187c82611bc7565b6118868185610673565b9350611896818560208601611c8b565b9290920192915050565b61179381611c5e565b61179381611c69565b61179381611c74565b60006118c8602183611bcb565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b805160009061016084019061192f85826118a9565b5060208301516119426020860182611a0b565b50604083015161195560408601826119c5565b50606083015161196860c0860182611a0b565b50608083015161197b60e0860182611a0b565b5060a083015161198f61010086018261178a565b5060c08301516119a3610120860182611a0b565b5060e08301518482036101408601526119bc8282611839565b95945050505050565b805160808301906119d68482611807565b5060208201516119e960208501826118b2565b5060408201516119fc60408501826118b2565b506060820151610c3060608501825b61179381611c2e565b6000611a20828461182d565b50602001919050565b6000611a358286611871565b9150611a418285611821565b6002820191506119bc8284611871565b6000611a5d8289611871565b9150611a698288611821565b600282019150611a798287611871565b9150611a858286611821565b600282019150611a958285611871565b9150611aa18284611810565b506001019695505050505050565b602081016110eb828461178a565b60408101611acb828561178a565b610c5b6020830184611a0b565b602080825281016110e88184611799565b602081016110eb8284611807565b602081016110eb82846118a0565b602080825281016110e88184611839565b602080825281016110eb816118bb565b602081016110eb8284611a0b565b60408101611b428285611a0b565b8181036020830152610c588184611839565b60405181810167ffffffffffffffff81118282101715611b7357600080fd5b604052919050565b600067ffffffffffffffff821115611b9257600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b60006110eb82611c45565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b8061067381611cdf565b8061067381611cec565b73ffffffffffffffffffffffffffffffffffffffff1690565b60006110eb82611bd4565b60006110eb82611c31565b60006110eb82611c3b565b82818337506000910152565b60005b83811015611ca6578181015183820152602001611c8e565b83811115610c305750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b60098110611ce957fe5b50565b60028110611ce957fe5b611cff81611bd4565b8114611ce957600080fd5b611cff81611bdf565b611cff81611c2e56fea365627a7a72315820b37aa32b3ac341d9b81826b9f3feef49bbc0841e7226c628d1ce9894cef6209d6c6578706572696d656e74616cf564736f6c63430005100040", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c80639f4a129711610076578063c2ac34a41161005b578063c2ac34a414610171578063f3835afb14610179578063fc0c546a14610181576100be565b80639f4a129714610149578063b189111a14610169576100be565b80633a8fdd7d116100a75780633a8fdd7d146100f65780634e2e5580146101165780637d98ebac14610136576100be565b806315c14a4a146100c357806323be76d9146100e1575b600080fd5b6100cb610189565b6040516100d89190611af7565b60405180910390f35b6100e96101a5565b6040516100d89190611aaf565b61010961010436600461161f565b6101c1565b6040516100d89190611b26565b6101296101243660046116bb565b6104f6565b6040516100d89190611ad8565b61010961014436600461157a565b610678565b61015c610157366004611554565b610ace565b6040516100d89190611ae9565b610109610aef565b610109610af4565b6100e9610af9565b6100e9610b15565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60015460009061022e9073ffffffffffffffffffffffffffffffffffffffff8781169116147f5465737449736f6c6174696f6e4d6f64655772617070657254726164657200007f54616b657220746f6b656e206d757374206265204f55545055545f544f4b454e88610b31565b6002546040517f8fae3be100000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638fae3be190610285908a90600401611aaf565b60206040518083038186803b15801561029d57600080fd5b505afa1580156102b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102d5919081019061170e565b6002546040517f8fae3be100000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690638fae3be190610331908a90600401611aaf565b60206040518083038186803b15801561034957600080fd5b505afa15801561035d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610381919081019061170e565b6002546040517f8928378e00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690638928378e906103dd908690600401611b26565b60206040518083038186803b1580156103f557600080fd5b505afa158015610409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061042d91908101906116f0565b516002546040517f8928378e00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690638928378e9061048a908690600401611b26565b60206040518083038186803b1580156104a257600080fd5b505afa1580156104b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104da91908101906116f0565b5190506104e8888383610c36565b9a9950505050505050505050565b60c08101516002546001546040517f8fae3be10000000000000000000000000000000000000000000000000000000081526060936105fa93909273ffffffffffffffffffffffffffffffffffffffff91821692638fae3be19261055d921690600401611aaf565b60206040518083038186803b15801561057557600080fd5b505afa158015610589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105ad919081019061170e565b147f5465737449736f6c6174696f6e4d6f64655772617070657254726164657200007f496e76616c6964206f7574707574206d61726b657400000000000000000000008560c00151610c62565b604080516001808252818301909252606091816020015b6106196112b5565b81526020019060019003908161061157905050905061065883600001518460e001518560c0015130876101200151886101000151896101400151610cc4565b8160008151811061066557fe5b602090810291909101015290505b919050565b6001546000906106e59073ffffffffffffffffffffffffffffffffffffffff8881169116147f5465737449736f6c6174696f6e4d6f64655772617070657254726164657200007f4d616b657220746f6b656e206d757374206265204f55545055545f544f4b454e89610b31565b6002546040517f8fae3be100000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638928378e908290638fae3be190610744908b90600401611aaf565b60206040518083038186803b15801561075c57600080fd5b505afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610794919081019061170e565b6040518263ffffffff1660e01b81526004016107b09190611b26565b60206040518083038186803b1580156107c857600080fd5b505afa1580156107dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061080091908101906116f0565b516002546040517f8fae3be100000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690638928378e908290638fae3be190610865908d90600401611aaf565b60206040518083038186803b15801561087d57600080fd5b505afa158015610891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108b5919081019061170e565b6040518263ffffffff1660e01b81526004016108d19190611b26565b60206040518083038186803b1580156108e957600080fd5b505afa1580156108fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061092191908101906116f0565b5190506000610931838884610c36565b905060006109418688018861172c565b509050610992818310157f5465737449736f6c6174696f6e4d6f64655772617070657254726164657200007f496e73756666696369656e74206f757470757420616d6f756e74000000000000610df6565b506040517fe30443bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a169063e30443bc906109e79030908590600401611abd565b600060405180830381600087803b158015610a0157600080fd5b505af1158015610a15573d6000803e3d6000fd5b50506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c16925063095ea7b39150610a6d908d908590600401611abd565b602060405180830381600087803b158015610a8757600080fd5b505af1158015610a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610abf919081019061169d565b509a9950505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161490565b600190565b600181565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b83610c3057610b3f83610e45565b7f3a20000000000000000000000000000000000000000000000000000000000000610b6984610e45565b7f203c000000000000000000000000000000000000000000000000000000000000610b9385610f1d565b604051610bc99594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001611a51565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610c2791600401611b05565b60405180910390fd5b50505050565b6000610c5882610c4c868663ffffffff61109416565b9063ffffffff6110f116565b90505b9392505050565b83610c3057610c7083610e45565b7f3a20000000000000000000000000000000000000000000000000000000000000610c9a84610e45565b7f203c000000000000000000000000000000000000000000000000000000000000610b9385611133565b610ccc6112b5565b60408051610100810182526004815260208082018b9052825160808101845260008082529293840192909182019081526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8814610d2d576000610d30565b60015b6001811115610d3b57fe5b81526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8814610d6d5787610d70565b60005b81525081526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018484604051602001610dba929190611b34565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905298975050505050505050565b82610e4057610e0482610e45565b7f3a20000000000000000000000000000000000000000000000000000000000000610e2e83610e45565b604051602001610bc993929190611a29565b505050565b60608082604051602001610e599190611a14565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b8015610f025781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110610ec557fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615610efd5760010181529050610673565b610e8c565b5060408051600080825260208201909252905b509392505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b81600081518110610f6957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b81600181518110610faa57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015610f155760028102610ff5600f8516611242565b83826029038151811061100457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350611046600f8516611242565b83826028038151811061105557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101610fdc565b6000826110a3575060006110eb565b828202828482816110b057fe5b04146110e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2790611b16565b90505b92915050565b60006110e883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611264565b606081611174575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610673565b8160005b811561118c57600101600a82049150611178565b6060816040519080825280601f01601f1916602001820160405280156111b9576020820181803883390190505b508593509050815b8015611239577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b8282815181106111ff57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506111c1565b50949350505050565b6000600a82101561125a57506030810160f81b610673565b5060570160f81b90565b6000818361129f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c279190611b05565b5060008385816112ab57fe5b0495945050505050565b6040805161010081018252600080825260208201529081016112d5611314565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b80356110eb81611cf6565b80516110eb81611d0a565b60008083601f84011261136557600080fd5b50813567ffffffffffffffff81111561137d57600080fd5b60208301915083600182028301111561139557600080fd5b9250929050565b600082601f8301126113ad57600080fd5b81356113c06113bb82611b7b565b611b54565b915080825260208301602083018583830111156113dc57600080fd5b6113e7838284611c7f565b50505092915050565b6000610160828403121561140357600080fd5b61140e610160611b54565b9050600061141c848461153e565b825250602061142d8484830161153e565b60208301525060406114418482850161133d565b60408301525060606114558482850161153e565b60608301525060806114698482850161133d565b60808301525060a061147d8482850161153e565b60a08301525060c06114918482