UNPKG

@dolomite-exchange/dolomite-margin

Version:

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

413 lines 263 kB
{ "contractName": "TestExternalCallback", "abi": [ { "inputs": [ { "internalType": "address", "name": "dolomiteMargin", "type": "address" }, { "internalType": "bool", "name": "shouldRevert", "type": "bool" }, { "internalType": "bool", "name": "shouldRevertWithMessage", "type": "bool" }, { "internalType": "bool", "name": "shouldConsumeTonsOfGas", "type": "bool" }, { "internalType": "bool", "name": "shouldReturnBomb", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "primaryAccountNumber", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "number", "type": "uint256" } ], "indexed": false, "internalType": "struct Account.Info", "name": "secondaryAccount", "type": "tuple" }, { "indexed": false, "internalType": "uint256", "name": "primaryMarketId", "type": "uint256" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "indexed": false, "internalType": "struct Types.Wei", "name": "primaryDeltaWei", "type": "tuple" }, { "indexed": false, "internalType": "uint256", "name": "secondaryMarketId", "type": "uint256" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "indexed": false, "internalType": "struct Types.Wei", "name": "secondaryDeltaWei", "type": "tuple" } ], "name": "LogOnInternalBalanceChangeInputs", "type": "event" }, { "constant": true, "inputs": [], "name": "DOLOMITE_MARGIN", "outputs": [ { "internalType": "contract IDolomiteMargin", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "SHOULD_CONSUME_TONS_OF_GAS", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "SHOULD_RETURN_BOMB", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "SHOULD_REVERT", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "SHOULD_REVERT_WITH_MESSAGE", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "setLocalOperator", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "string", "name": "revertMessage", "type": "string" } ], "name": "setRevertMessage", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "_primaryAccountNumber", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "number", "type": "uint256" } ], "internalType": "struct Account.Info", "name": "_secondaryAccount", "type": "tuple" }, { "internalType": "uint256", "name": "_primaryMarketId", "type": "uint256" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Types.Wei", "name": "_primaryDeltaWei", "type": "tuple" }, { "internalType": "uint256", "name": "_secondaryMarketId", "type": "uint256" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Types.Wei", "name": "_secondaryDeltaWei", "type": "tuple" } ], "name": "onInternalBalanceChange", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dolomiteMargin\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"shouldRevert\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldRevertWithMessage\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldConsumeTonsOfGas\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldReturnBomb\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"primaryAccountNumber\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Account.Info\",\"name\":\"secondaryAccount\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"primaryMarketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Types.Wei\",\"name\":\"primaryDeltaWei\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"secondaryMarketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Types.Wei\",\"name\":\"secondaryDeltaWei\",\"type\":\"tuple\"}],\"name\":\"LogOnInternalBalanceChangeInputs\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOLOMITE_MARGIN\",\"outputs\":[{\"internalType\":\"contract IDolomiteMargin\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"SHOULD_CONSUME_TONS_OF_GAS\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"SHOULD_RETURN_BOMB\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"SHOULD_REVERT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"SHOULD_REVERT_WITH_MESSAGE\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_primaryAccountNumber\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"_secondaryAccount\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_primaryMarketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"_primaryDeltaWei\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_secondaryMarketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"_secondaryDeltaWei\",\"type\":\"tuple\"}],\"name\":\"onInternalBalanceChange\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"setLocalOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"revertMessage\",\"type\":\"string\"}],\"name\":\"setRevertMessage\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestExternalCallback.sol\":\"TestExternalCallback\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol\":{\"keccak256\":\"0xe40babc0a6dd2a767d76f3e0f0a22de124c4c480f2b2227a7b924b44e57526ea\",\"urls\":[\"bzz-raw://458f7f1f16eacd4faae597090503dc1e58446e9d371640c77b2e01e3e3113f17\",\"dweb:/ipfs/QmXqTG4sWJeDh5XA286KarbqHT4qJ7m3dphS16enpqtQiX\"]},\"/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/IExternalCallback.sol\":{\"keccak256\":\"0xd8134eac006b0a59b71cbcca82dfce7ce092a57c13a8383ebf0e8bc90c0df3e7\",\"urls\":[\"bzz-raw://ccead8bdcc71402ae7b1d8fb9bc1527081a5eb14f98a5157f5c6f27f21f8ad31\",\"dweb:/ipfs/QmdnDvTiX3EDm93ahjnZabNNgoyQzGtKpfbQUNtJe7t8Ts\"]},\"/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/TestExternalCallback.sol\":{\"keccak256\":\"0xc3b73b8a7bbcf1347a0de149c137f25d9d057742255def3328b8e91397b6c298\",\"urls\":[\"bzz-raw://9fce8f700487692b60376f2ec1ba762a70bdd5988a94a5040c0e57d06a743171\",\"dweb:/ipfs/QmZkTcyYHtAVCv8WPzFN7U524bZDYh75Y12ScYDBMbBTV1\"]},\"@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": "0x608060405260006002553480156200001657600080fd5b5060405162000ec538038062000ec58339810160408190526200003991620000d5565b600080546001600160a01b0319166001600160a01b03969096169590951760ff60a01b1916600160a01b941515949094029390931760ff60a81b1916600160a81b921515929092029190911760ff60b01b1916600160b01b911515919091021760ff60b81b1916600160b81b9115159190910217905562000198565b8051620000c28162000173565b92915050565b8051620000c2816200018d565b600080600080600060a08688031215620000ee57600080fd5b6000620000fc8888620000b5565b95505060206200010f88828901620000c8565b94505060406200012288828901620000c8565b93505060606200013588828901620000c8565b92505060806200014888828901620000c8565b9150509295509295909350565b6000620000c28262000167565b151590565b6001600160a01b031690565b6200017e8162000155565b81146200018a57600080fd5b50565b6200017e8162000162565b610d1d80620001a86000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639bd954841161005b5780639bd95484146100d0578063b3b14a41146100da578063dcd3f52e146100ed578063fc17894e1461010057610088565b806305fc08241461008d57806315c14a4a146100ab5780636812f616146100c0578063913948ef146100c8575b600080fd5b610095610108565b6040516100a29190610b25565b60405180910390f35b6100b361012b565b6040516100a29190610b33565b610095610147565b61009561016b565b6100d861018d565b005b6100d86100e83660046107db565b6102b9565b6100d86100fb36600461081d565b6102ca565b61009561048b565b600054760100000000000000000000000000000000000000000000900460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005477010000000000000000000000000000000000000000000000900460ff1681565b6000547501000000000000000000000000000000000000000000900460ff1681565b604080516001808252818301909252606091816020015b6101ac61062a565b8152602001906001900390816101a457905050905033816000815181106101cf57fe5b60200260200101516000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060018160008151811061021c57fe5b6020908102919091018101519115159101526000546040517f85b53fc800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906385b53fc890610284908490600401610b0d565b600060405180830381600087803b15801561029e57600080fd5b505af11580156102b2573d6000803e3d6000fd5b5050505050565b6102c560018383610641565b505050565b60005474010000000000000000000000000000000000000000900460ff1615610441576000547501000000000000000000000000000000000000000000900460ff16156103c4576001805460018160011615610100020316600290049050600014156103815761037c60007f5465737445787465726e616c43616c6c6261636b0000000000000000000000007f707572706f736566756c20726576657273696f6e0000000000000000000000006104ac565b6103bf565b60016040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b69190610b52565b60405180910390fd5b61043c565b600054760100000000000000000000000000000000000000000000900460ff161561040e5760005b61c35081101561040857600280546001908101909155016103ec565b5061043c565b60005477010000000000000000000000000000000000000000000000900460ff161561008857620f42406000fd5b610483565b7fc5419c808631364644e29ff4e6f5785ec44b8d71d47dfeb45cafcd96a087acfd86868686868660405161047a96959493929190610b63565b60405180910390a15b505050505050565b60005474010000000000000000000000000000000000000000900460ff1681565b826102c5576104ba82610554565b7f3a200000000000000000000000000000000000000000000000000000000000006104e483610554565b6040516020016104f693929190610adc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526103b691600401610b41565b606080826040516020016105689190610ac7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b80156106115781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909101908290829081106105d457fe5b01602001517fff00000000000000000000000000000000000000000000000000000000000000161561060c5760010181529050610625565b61059b565b505060408051600081526020810190915290505b919050565b604080518082019091526000808252602082015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106106a0578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008235161785556106cd565b828001600101855582156106cd579182015b828111156106cd5782358255916020019190600101906106b2565b506106d99291506106dd565b5090565b6106f791905b808211156106d957600081556001016106e3565b90565b803561070581610cb1565b92915050565b803561070581610cc8565b60008083601f84011261072857600080fd5b50813567ffffffffffffffff81111561074057600080fd5b60208301915083600182028301111561075857600080fd5b9250929050565b60006040828403121561077157600080fd5b61077b6040610bbe565b9050600061078984846106fa565b825250602061079a848483016107d0565b60208301525092915050565b6000604082840312156107b857600080fd5b6107c26040610bbe565b90506000610789848461070b565b803561070581610cd1565b600080602083850312156107ee57600080fd5b823567ffffffffffffffff81111561080557600080fd5b61081185828601610716565b92509250509250929050565b600080600080600080610120878903121561083757600080fd5b600061084389896107d0565b965050602061085489828a0161075f565b955050606061086589828a016107d0565b945050608061087689828a016107a6565b93505060c061088789828a016107d0565b92505060e061089889828a016107a6565b9150509295509295509295565b60006108b18383610a89565b505060400190565b6108c281610c04565b82525050565b60006108d382610bf7565b6108dd8185610bfb565b93506108e883610be5565b8060005b8381101561091657815161090088826108a5565b975061090b83610be5565b9250506001016108ec565b509495945050505050565b6108c281610c0f565b6108c261093682610c14565b6106f7565b6108c2610936826106f7565b600061095282610bf7565b61095c8185610625565b935061096c818560208601610c5d565b9290920192915050565b6108c281610c52565b600061098a82610bf7565b6109948185610bfb565b93506109a4818560208601610c5d565b6109ad81610c89565b9093019392505050565b6000815460018116600081146109d45760018114610a1857610a57565b607f60028304166109e58187610bfb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168152955050602085019250610a57565b60028204610a268187610bfb565b9550610a3185610beb565b60005b82811015610a5057815488820152600190910190602001610a34565b8701945050505b505092915050565b80516040830190610a7084826108b9565b506020820151610a836020850182610abe565b50505050565b80516040830190610a9a84826108b9565b506020820151610a836020850182610921565b80516040830190610a708482610921565b6108c2816106f7565b6000610ad3828461093b565b50602001919050565b6000610ae88286610947565b9150610af4828561092a565b600282019150610b048284610947565b95945050505050565b60208082528101610b1e81846108c8565b9392505050565b602081016107058284610921565b602081016107058284610976565b60208082528101610b1e818461097f565b60208082528101610b1e81846109b7565b6101208101610b728289610abe565b610b7f6020830188610a5f565b610b8c6060830187610abe565b610b996080830186610aad565b610ba660c0830185610abe565b610bb360e0830184610aad565b979650505050505050565b60405181810167ffffffffffffffff81118282101715610bdd57600080fd5b604052919050565b60200190565b60009081526020902090565b5190565b90815260200190565b600061070582610c39565b151590565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b73ffffffffffffffffffffffffffffffffffffffff1690565b600061070582610c04565b60005b83811015610c78578181015183820152602001610c60565b83811115610a835750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b610cba81610c04565b8114610cc557600080fd5b50565b610cba81610c0f565b610cba816106f756fea365627a7a72315820994d173c94e3a64be8c047dca7971610161ef2bdb088a25480d8ee5194d977236c6578706572696d656e74616cf564736f6c63430005100040", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80639bd954841161005b5780639bd95484146100d0578063b3b14a41146100da578063dcd3f52e146100ed578063fc17894e1461010057610088565b806305fc08241461008d57806315c14a4a146100ab5780636812f616146100c0578063913948ef146100c8575b600080fd5b610095610108565b6040516100a29190610b25565b60405180910390f35b6100b361012b565b6040516100a29190610b33565b610095610147565b61009561016b565b6100d861018d565b005b6100d86100e83660046107db565b6102b9565b6100d86100fb36600461081d565b6102ca565b61009561048b565b600054760100000000000000000000000000000000000000000000900460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005477010000000000000000000000000000000000000000000000900460ff1681565b6000547501000000000000000000000000000000000000000000900460ff1681565b604080516001808252818301909252606091816020015b6101ac61062a565b8152602001906001900390816101a457905050905033816000815181106101cf57fe5b60200260200101516000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060018160008151811061021c57fe5b6020908102919091018101519115159101526000546040517f85b53fc800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906385b53fc890610284908490600401610b0d565b600060405180830381600087803b15801561029e57600080fd5b505af11580156102b2573d6000803e3d6000fd5b5050505050565b6102c560018383610641565b505050565b60005474010000000000000000000000000000000000000000900460ff1615610441576000547501000000000000000000000000000000000000000000900460ff16156103c4576001805460018160011615610100020316600290049050600014156103815761037c60007f5465737445787465726e616c43616c6c6261636b0000000000000000000000007f707572706f736566756c20726576657273696f6e0000000000000000000000006104ac565b6103bf565b60016040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b69190610b52565b60405180910390fd5b61043c565b600054760100000000000000000000000000000000000000000000900460ff161561040e5760005b61c35081101561040857600280546001908101909155016103ec565b5061043c565b60005477010000000000000000000000000000000000000000000000900460ff161561008857620f42406000fd5b610483565b7fc5419c808631364644e29ff4e6f5785ec44b8d71d47dfeb45cafcd96a087acfd86868686868660405161047a96959493929190610b63565b60405180910390a15b505050505050565b60005474010000000000000000000000000000000000000000900460ff1681565b826102c5576104ba82610554565b7f3a200000000000000000000000000000000000000000000000000000000000006104e483610554565b6040516020016104f693929190610adc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526103b691600401610b41565b606080826040516020016105689190610ac7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b80156106115781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909101908290829081106105d457fe5b01602001517fff00000000000000000000000000000000000000000000000000000000000000161561060c5760010181529050610625565b61059b565b505060408051600081526020810190915290505b919050565b604080518082019091526000808252602082015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106106a0578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008235161785556106cd565b828001600101855582156106cd579182015b828111156106cd5782358255916020019190600101906106b2565b506106d99291506106dd565b5090565b6106f791905b808211156106d957600081556001016106e3565b90565b803561070581610cb1565b92915050565b803561070581610cc8565b60008083601f84011261072857600080fd5b50813567ffffffffffffffff81111561074057600080fd5b60208301915083600182028301111561075857600080fd5b9250929050565b60006040828403121561077157600080fd5b61077b6040610bbe565b9050600061078984846106fa565b825250602061079a848483016107d0565b60208301525092915050565b6000604082840312156107b857600080fd5b6107c26040610bbe565b90506000610789848461070b565b803561070581610cd1565b600080602083850312156107ee57600080fd5b823567ffffffffffffffff81111561080557600080fd5b61081185828601610716565b92509250509250929050565b600080600080600080610120878903121561083757600080fd5b600061084389896107d0565b965050602061085489828a0161075f565b955050606061086589828a016107d0565b945050608061087689828a016107a6565b93505060c061088789828a016107d0565b92505060e061089889828a016107a6565b9150509295509295509295565b60006108b18383610a89565b505060400190565b6108c281610c04565b82525050565b60006108d382610bf7565b6108dd8185610bfb565b93506108e883610be5565b8060005b8381101561091657815161090088826108a5565b975061090b83610be5565b9250506001016108ec565b509495945050505050565b6108c281610c0f565b6108c261093682610c14565b6106f7565b6108c2610936826106f7565b600061095282610bf7565b61095c8185610625565b935061096c818560208601610c5d565b9290920192915050565b6108c281610c52565b600061098a82610bf7565b6109948185610bfb565b93506109a4818560208601610c5d565b6109ad81610c89565b9093019392505050565b6000815460018116600081146109d45760018114610a1857610a57565b607f60028304166109e58187610bfb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168152955050602085019250610a57565b60028204610a268187610bfb565b9550610a3185610beb565b60005b82811015610a5057815488820152600190910190602001610a34565b8701945050505b505092915050565b80516040830190610a7084826108b9565b506020820151610a836020850182610abe565b50505050565b80516040830190610a9a84826108b9565b506020820151610a836020850182610921565b80516040830190610a708482610921565b6108c2816106f7565b6000610ad3828461093b565b50602001919050565b6000610ae88286610947565b9150610af4828561092a565b600282019150610b048284610947565b95945050505050565b60208082528101610b1e81846108c8565b9392505050565b602081016107058284610921565b602081016107058284610976565b60208082528101610b1e818461097f565b60208082528101610b1e81846109b7565b6101208101610b728289610abe565b610b7f6020830188610a5f565b610b8c6060830187610abe565b610b996080830186610aad565b610ba660c0830185610abe565b610bb360e0830184610aad565b979650505050505050565b60405181810167ffffffffffffffff81118282101715610bdd57600080fd5b604052919050565b60200190565b60009081526020902090565b5190565b90815260200190565b600061070582610c39565b151590565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b73ffffffffffffffffffffffffffffffffffffffff1690565b600061070582610c04565b60005b83811015610c78578181015183820152602001610c60565b83811115610a835750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b610cba81610c04565b8114610cc557600080fd5b50565b610cba81610c0f565b610cba816106f756fea365627a7a72315820994d173c94e3a64be8c047dca7971610161ef2bdb088a25480d8ee5194d977236c6578706572696d656e74616cf564736f6c63430005100040", "sourceMap": "980:2855:122:-;;;1603:1;1579:25;;1611:440;8:9:-1;5:2;;;30:1;27;20:12;5:2;1611:440:122;;;;;;;;;;;;;;;;;;;;;1302:15:6;:50;;-1:-1:-1;;;;;;1302:50:6;-1:-1:-1;;;;;1302:50:6;;;;;;;;-1:-1:-1;;;;1846:28:122;-1:-1:-1;;;1846:28:122;;;;;;;;;;;-1:-1:-1;;;;1884:52:122;-1:-1:-1;;;1884:52:122;;;;;;;;;;;-1:-1:-1;;;;1946:51:122;-1:-1:-1;;;1946:51:122;;;;;;;;-1:-1:-1;;;;2007:37:122;-1:-1:-1;;;2007:37:122;;;;;;;;;;980:2855;;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:128;221:13;;239:30;221:13;239:30;;281:785;;;;;;452:3;440:9;431:7;427:23;423:33;420:2;;;469:1;466;459:12;420:2;504:1;521:64;577:7;557:9;521:64;;;511:74;;483:108;622:2;640:61;693:7;684:6;673:9;669:22;640:61;;;630:71;;601:106;738:2;756:61;809:7;800:6;789:9;785:22;756:61;;;746:71;;717:106;854:2;872:61;925:7;916:6;905:9;901:22;872:61;;;862:71;;833:106;970:3;989:61;1042:7;1033:6;1022:9;1018:22;989:61;;;979:71;;949:107;414:652;;;;;;;;;1073:91;;1135:24;1153:5;1135:24;;1171:85;1237:13;1230:21;;1213:43;1263:121;-1:-1;;;;;1325:54;;1308:76;1391:117;1460:24;1478:5;1460:24;;;1453:5;1450:35;1440:2;;1499:1;1496;1489:12;1440:2;1434:74;;1515:111;1581:21;1596:5;1581:21;;1555:71;980:2855:122;;;;;;", "deployedSourceMap": "980:2855:122:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;980:2855:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1462:38;;;:::i;:::-;;;;;;;;;;;;;;;;1130::6;;;:::i;:::-;;;;;;;;1506:30:122;;;:::i;1418:38::-;;;:::i;2057:249::-;;;:::i;:::-;;2312:113;;;;;;;;;:::i;2431:1401::-;;;;;;;;;:::i;1387:25::-;;;:::i;1462:38::-;;;;;;;;;:::o;1130::6:-;;;;;;:::o;1506:30:122:-;;;;;;;;;:::o;1418:38::-;;;;;;;;;:::o;2057:249::-;2143:26;;;2167:1;2143:26;;;;;;;;;2104:36;;2143:26;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2104:65;;2203:10;2179:9;2189:1;2179:12;;;;;;;;;;;;;;:21;;:34;;;;;;;;;;;2246:4;2223:9;2233:1;2223:12;;;;;;;;;;;;;;;;;;;:27;;;:20;;:27;-1:-1:-1;2260:15:122;:39;;;;;:15;;;;;:28;;:39;;2289:9;;2260:39;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2260:39:122;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2260:39:122;;;;2057:249;:::o;2312:113::-;2388:30;:14;2405:13;;2388:30;:::i;:::-;;2312:113;;:::o;2431:1401::-;2735:13;;;;;;;2731:1095;;;2768:26;;;;;;;2764:756;;;2824:14;2818:28;;;;;;;;;;;;;;;;2850:1;2818:33;2814:292;;;2875:143;2913:5;2944:4;2875:143;:12;:143::i;:::-;2814:292;;;3072:14;3065:22;;;;;;;;;;;;;;;;;;;;2814:292;2764:756;;;3130:26;;;;;;;3126:394;;;3181:9;3176:83;3196:5;3192:1;:9;3176:83;;;3230:5;:10;;3239:1;3230:10;;;;;;3203:3;3176:83;;;;3126:394;;;3283:18;;;;;;;3279:241;;;3407:7;3404:1;3397:18;3279:241;2731:1095;;;3555:260;3605:21;3644:17;3679:16;3713;3747:18;3783;3555:260;;;;;;;;;;;;;;;;;;;;2731:1095;2431:1401;;;;;;:::o;1387:25::-;;;;;;;;;:::o;1294:426:99:-;1428:4;1423:291;;1542:24;1561:4;1542:18;:24::i;:::-;1592:5;1623:26;1642:6;1623:18;:26::i;:::-;1500:171;;;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;1500:171:99;;;;1448:255;;;;;;;;;6359:968;6463:12;6538:19;6577:5;6560:23;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;6560:23:99;;;;-1:-1:-1;49:4;6689:572:99;6710:6;;6689:572;;6962:9;;6864:3;;;;;6962:6;;6864:3;;6962:9;;;;;;;;;;;;:14;6958:293;;7017:1;7013:5;7143:22;;7150:6;-1:-1:-1;7223:13:99;;6958:293;6689:572;;;-1:-1:-1;;7308:12:99;;;7318:1;7308:12;;;;;;;;;-1:-1:-1;6359:968:99;;;;:::o;980:2855:122:-;;;;;;;;;;-1:-1:-1;980:2855:122;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;980:2855:122;;;-1:-1:-1;980:2855:122;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;;57:78;;;;;142:124;206:20;;231:30;206:20;231:30;;288:337;;;403:3;396:4;388:6;384:17;380:27;370:2;;421:1;418;411:12;370:2;-1:-1;441:20;;481:18;470:30;;467:2;;;513:1;510;503:12;467:2;547:4;539:6;535:17;523:29;;598:3;590:4;582:6;578:17;568:8;564:32;561:41;558:2;;;615:1;612;605:12;558:2;363:262;;;;;;659:468;;771:4;759:9;754:3;750:19;746:30;743:2;;;789:1;786;779:12;743:2;807:20;822:4;807:20;;;798:29;-1:-1;878:1;910:49;955:3;935:9;910:49;;;885:75;;-1:-1;1023:2;1056:49;1101:3;1077:22;;;1056:49;;;1049:4;1042:5;1038:16;1031:75;981:136;737:390;;;;;1157:462;;1268:4;1256:9;1251:3;1247:19;1243:30;1240:2;;;1286:1;1283;1276:12;1240:2;1304:20;1319:4;1304:20;;;1295:29;-1:-1;1374:1;1406:46;1448:3;1428:9;1406:46;;1626:130;1693:20;;1718:33;1693:20;1718:33;;1763:367;;;1887:2;1875:9;1866:7;1862:23;1858:32;1855:2;;;1903:1;1900;1893:12;1855:2;1938:31;;1989:18;1978:30;;1975:2;;;2021:1;2018;2011:12;1975:2;2049:65;2106:7;2097:6;2086:9;2082:22;2049:65;;;2039:75;;;;1917:203;1849:281;;;;;;2137:1004;;;;;;;2393:3;2381:9;2372:7;2368:23;2364:33;2361:2;;;2410:1;2407;2400:12;2361:2;2445:1;2462:53;2507:7;2487:9;2462:53;;;2452:63;;2424:97;2552:2;2570:76;2638:7;2629:6;2618:9;2614:22;2570:76;;;2560:86;;2531:121;2683:2;2701:53;2746:7;2737:6;2726:9;2722:22;2701:53;;;2691:63;;2662:98;2791:3;2810:75;2877:7;2868:6;2857:9;2853:22;2810:75;;;2800:85;;2770:121;2922:3;2941:53;2986:7;2977:6;2966:9;2962:22;2941:53;;;2931:63;;2901:99;3031:3;3050:75;3117:7;3108:6;3097:9;3093:22;3050:75;;;3040:85;;3010:121;2355:786;;;;;;;;;3149:281;;3288:102;3386:3;3378:6;3288:102;;;-1:-1;;3419:4;3410:14;;3281:149;3438:103;3511:24;3529:5;3511:24;;;3506:3;3499:37;3493:48;;;3613:898;;3810:80;3884:5;3810:80;;;3903:112;4008:6;4003:3;3903:112;;;3896:119;;4036:82;4112:5;4036:82;;;4138:7;4166:1;4151:338;4176:6;4173:1;4170:13;4151:338;;;4243:6;4237:13;4264:115;4375:3;4360:13;4264:115;;;4257:122;;4396:86;4475:6;4396:86;;;4386:96;-1:-1;;4198:1;4191:9;4151:338;;;-1:-1;4502:3;;3789:722;-1:-1;;;;;3789:722;4519:94;4586:21;4601:5;4586:21;;4731:148;4830:43;4849:23;4866:5;4849:23;;;4830:43;;4886:152;4987:45;5007:24;5025:5;5007:24;;5045:356;;5173:38;5205:5;5173:38;;;5223:88;5304:6;5299:3;5223:88;;;5216:95;;5316:52;5361:6;5356:3;5349:4;5342:5;5338:16;5316:52;;;5380:16;;;;;5153:248;-1:-1;;5153:248;5408:176;5516:62;5572:5;5516:62;;5591:347;;5703:39;5736:5;5703:39;;;5754:71;5818:6;5813:3;5754:71;;;5747:78;;5830:52;5875:6;5870:3;5863:4;5856:5;5852:16;5830:52;;;5903:29;5925:6;5903:29;;;5894:39;;;;5683:255;-1:-1;;;5683:255;5970:823;;6089:5;6083:12;6123:1;6112:9;6108:17;6136:1;6131:248;;;;6390:1;6385:402;;;;6101:686;;6131:248;6209:4;6205:1;6194:9;6190:17;6186:28;6228:71;6292:6;6287:3;6228:71;;;6333:9;6318:25;;6306:38;;6221:78;-1:-1;;6367:4;6358:14;;;-1:-1;6131:248;;6385:402;6454:1;6443:9;6439:17;6470:71;6534:6;6529:3;6470:71;;;6463:78;;6563:38;6595:5;6563:38;;;6617:1;6625:130;6639:6;6636:1;6633:13;6625:130;;;6698:14;;6685:11;;;6678:35;6745:1;6732:15;;;;6661:4;6654:12;6625:130;;;6769:11;;;-1:-1;;;6101:686;;6059:734;;;;;;6850:475;7056:23;;6989:4;6980:14;;;7085:63;6984:3;7056:23;7085:63;;;7009:145;7229:4;7222:5;7218:16;7212:23;7241:63;7298:4;7293:3;7289:14;7275:12;7241:63;;;7164:146;6962:363;;;;7391:473;7600:23;;7530:4;7521:14;;;7629:63;7525:3;7600:23;7629:63;;;7550:148;7774:4;7767:5;7763:16;7757:23;7786:57;7837:4;7832:3;7828:14;7814:12;7786:57;;7914:465;8117:23;;8051:4;8042:14;;;8146:57;8046:3;8117:23;8146:57;;8386:103;8459:24;8477:5;8459:24;;8616:244;;8735:75;8806:3;8797:6;8735:75;;;-1:-1;8832:2;8823:12;;8723:137;-1:-1;8723:137;8867:553;;9083:93;9172:3;9163:6;9083:93;;;9076:100;;9187:73;9256:3;9247:6;9187:73;;;9282:1;9277:3;9273:11;9266:18;;9302:93;9391:3;9382:6;9302:93;;;9295:100;9064:356;-1:-1;;;;;9064:356;9427:465;9647:2;9661:47;;;9632:18;;9722:160;9632:18;9868:6;9722:160;;;9714:168;9618:274;-1:-1;;;9618:274;9899:201;10011:2;9996:18;;10025:65;10000:9;10063:6;10025:65;;10107:263;10250:2;10235:18;;10264:96;10239:9;10333:6;10264:96;;10377:301;10515:2;10529:47;;;10500:18;;10590:78;10500:18;10654:6;10590:78;;10685:295;10820:2;10834:47;;;10805:18;;10895:75;10805:18;10956:6;10895:75;;10987:1040;11379:3;11364:19;;11394:71;11368:9;11438:6;11394:71;;;11476:118;11590:2;11579:9;11575:18;11566:6;11476:118;;;11605:72;11673:2;11662:9;11658:18;11649:6;11605:72;;;11688:117;11800:3;11789:9;11785:19;11776:6;11688:117;;;11816:73;11884:3;11873:9;11869:19;11860:6;11816:73;;;11900:117;12012:3;12001:9;11997:19;11988:6;11900:117;;;11350:677;;;;;;;;;;12034:256;12096:2;12090:9;12122:17;;;12197:18;12182:34;;12218:22;;;12179:62;12176:2;;;12254:1;12251;12244:12;12176:2;12270;12263:22;12074:216;;-1:-1;12074:216;12297:177;12447:4;12438:14;;12395:79;12481:158;;12576:14;;;12618:4;12605:18;;;12535:104;12646:163;12775:12;;12746:63;13215:204;13359:19;;;13408:4;13399:14;;13352:67;13752:91;;13814:24;13832:5;13814:24;;13850:85;13916:13;13909:21;;13892:43;13942:144;14014:66;14003:78;;13986:100;14172:121;14245:42;14234:54;;14217:76;14379:171;;14483:62;14539:5;14483:62;;14698:268;14763:1;14770:101;14784:6;14781:1;14778:13;14770:101;;;14851:11;;;14845:18;14832:11;;;14825:39;14806:2;14799:10;14770:101;;;14886:6;14883:1;14880:13;14877:2;;;-1:-1;;14951:1;14933:16;;14926:27;14747:219;15135:97;15223:2;15203:14;15219:7;15199:28;;15183:49;15240:117;15309:24;15327:5;15309:24;;;15302:5;15299:35;15289:2;;15348:1;15345;15338:12;15289:2;15283:74;;15364:111;15430:21;15445:5;15430:21;;15482:117;15551:24;15569:5;15551:24;", "source": "/*\n\n Copyright 2021 Dolomite.\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 { OnlyDolomiteMargin } from \"../external/helpers/OnlyDolomiteMargin.sol\";\nimport { IExternalCallback } from \"../protocol/interfaces/IExternalCallback.sol\";\nimport { Account } from \"../protocol/lib/Account.sol\";\nimport { Require } from \"../protocol/lib/Require.sol\";\nimport { Types } from \"../protocol/lib/Types.sol\";\n\n\ncontract TestExternalCallback is OnlyDolomiteMargin, IExternalCallback {\n\n bytes32 private constant FILE = \"TestExternalCallback\";\n\n event LogOnInternalBalanceChangeInputs(\n uint256 primaryAccountNumber,\n Account.Info secondaryAccount,\n uint256 primaryMarketId,\n Types.Wei primaryDeltaWei,\n uint256 secondaryMarketId,\n Types.Wei secondaryDeltaWei\n );\n\n bool public SHOULD_REVERT;\n bool public SHOULD_REVERT_WITH_MESSAGE;\n bool public SHOULD_CONSUME_TONS_OF_GAS;\n bool public SHOULD_RETURN_BOMB;\n\n string private REVERT_MESSAGE;\n\n uint256 private value = 0;\n\n constructor(\n address dolomiteMargin,\n bool shouldRevert,\n bool shouldRevertWithMessage,\n bool shouldConsumeTonsOfGas,\n bool shouldReturnBomb\n ) public OnlyDolomiteMargin(dolomiteMargin) {\n SHOULD_REVERT = shouldRevert;\n SHOULD_REVERT_WITH_MESSAGE = shouldRevertWithMessage;\n SHOULD_CONSUME_TONS_OF_GAS = shouldConsumeTonsOfGas;\n SHOULD_RETURN_BOMB = shouldReturnBomb;\n }\n\n function setLocalOperator() external {\n Types.OperatorArg[] memory operators = new Types.OperatorArg[](1);\n operators[0].operator = msg.sender;\n operators[0].trusted = true;\n DOLOMITE_MARGIN.setOperators(operators);\n }\n\n function setRevertMessage(string calldata revertMessage) external {\n REVERT_MESSAGE = revertMessage;\n }\n\n function onInternalBalanceChange(\n uint256 _primaryAccountNumber,\n Account.Info memory _secondaryAccount,\n uint256 _primaryMarketId,\n Types.Wei memory _primaryDeltaWei,\n uint256 _secondaryMarketId,\n Types.Wei memory _secondaryDeltaWei\n ) public {\n if (SHOULD_REVERT) {\n if (SHOULD_REVERT_WITH_MESSAGE) {\n if (bytes(REVERT_MESSAGE).length == 0) {\n Require.that(\n false,\n FILE,\n \"purposeful reversion\"\n );\n } else {\n revert(REVERT_MESSAGE);\n }\n } else if (SHOULD_CONSUME_TONS_OF_GAS) {\n for (uint256 i; i < 50000; ++i) {\n value += 1;\n }\n } else if (SHOULD_RETURN_BOMB) {\n // send back 1,000,000 bytes\n assembly {\n revert(0, 1000000)\n }\n revert();\n } else {\n revert();\n }\n } else {\n emit LogOnInternalBalanceChangeInputs(\n _primaryAccountNumber,\n _secondaryAccount,\n _primaryMarketId,\n _primaryDeltaWei,\n _secondaryMarketId,\n _secondaryDeltaWei\n );\n }\n }\n\n}\n", "sourcePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestExternalCallback.sol", "ast": { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestExternalCallback.sol", "exportedSymbols": { "TestExternalCallback": [ 33978 ] }, "id": 33979, "nodeType": "SourceUnit", "nodes": [ { "id": 33771, "literals": [ "solidity", "^", "0.5", ".7" ], "nodeType": "PragmaDirective", "src": "595:23:122" }, { "id": 33772, "literals": [ "experimental", "ABIEncoderV2" ], "nodeType": "PragmaDirective", "src": "619:33:122" }, { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol", "file": "../external/helpers/OnlyDolomiteMargin.sol", "id": 33774, "nodeType": "ImportDirective", "scope": 33979, "sourceUnit": 3067, "src": "654:80:122", "symbolAliases": [ { "foreign": 33773, "local": null } ], "unitAlias": "" }, { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IExternalCallback.sol", "file": "../protocol/interfaces/IExternalCallback.sol", "id": 33776, "nodeType": "ImportDirective", "scope": 33979, "sourceUnit": 24773, "src": "735:81:122", "symbolAliases": [ { "foreign": 33775, "local": null } ], "unitAlias": "" }, { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol", "file": "../protocol/lib/Account.sol", "id": 33778, "nodeType": "ImportDirective", "scope": 33979, "sourceUnit": 24886, "src": "817:54:122", "symbolAliases": [ { "foreign": 33777, "local": null } ], "unitAlias": "" }, { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol", "file": "../protocol/lib/Require.sol", "id": 33780, "nodeType": "ImportDirective", "scope": 33979, "sourceUnit": 28453, "src": "872:54:122", "symbolAliases": [ { "foreign": 33779, "local": null } ], "unitAlias": "" }, { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol", "file": "../protocol/lib/Types.sol", "id": 33782, "nodeType": "ImportDirective", "scope": 33979, "sourceUnit": 31362, "src": "927:50:122", "symbolAliases": [ { "foreign": 33781, "local": null } ], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": n