{
  "contractName": "DataRegistry",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "setId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "dataPoint",
          "type": "int256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "PublishedDataPoint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "setId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "provider",
          "type": "address"
        }
      ],
      "name": "UpdatedDataProvider",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "setId",
          "type": "bytes32"
        }
      ],
      "name": "isRegistered",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "setId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "getDataPoint",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "setId",
          "type": "bytes32"
        }
      ],
      "name": "getLastUpdatedTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "setId",
          "type": "bytes32"
        }
      ],
      "name": "getDataProvider",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "setId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "provider",
          "type": "address"
        }
      ],
      "name": "setDataProvider",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "setId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "int256",
          "name": "dataPoint",
          "type": "int256"
        }
      ],
      "name": "publishDataPoint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"dataPoint\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"PublishedDataPoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"UpdatedDataProvider\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"setId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getDataPoint\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"setId\",\"type\":\"bytes32\"}],\"name\":\"getDataProvider\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"setId\",\"type\":\"bytes32\"}],\"name\":\"getLastUpdatedTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"setId\",\"type\":\"bytes32\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"setId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"dataPoint\",\"type\":\"int256\"}],\"name\":\"publishDataPoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"setId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"setDataProvider\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getDataPoint(bytes32,uint256)\":{\"params\":{\"setId\":\"id of the data set\",\"timestamp\":\"timestamp of the data point\"},\"returns\":{\"_0\":\"data point, bool indicating whether data point exists\"}},\"getDataProvider(bytes32)\":{\"params\":{\"setId\":\"id of the data set\"},\"returns\":{\"_0\":\"address of provider\"}},\"getLastUpdatedTimestamp(bytes32)\":{\"params\":{\"setId\":\"id of the data set\"},\"returns\":{\"_0\":\"last updated timestamp\"}},\"isRegistered(bytes32)\":{\"params\":{\"setId\":\"setId of the data set\"},\"returns\":{\"_0\":\"true if market object exists\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"publishDataPoint(bytes32,uint256,int256)\":{\"details\":\"Can only be called by a whitelisted data provider.\",\"params\":{\"dataPoint\":\"the data point of the data set\",\"setId\":\"id of the data set\",\"timestamp\":\"timestamp of the data point\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setDataProvider(bytes32,address)\":{\"details\":\"Can only be called by the owner of the DataRegistry.\",\"params\":{\"provider\":\"address of the provider\",\"setId\":\"id of the data set\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"DataRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getDataPoint(bytes32,uint256)\":{\"notice\":\"Returns a data point of a market object for a given timestamp.\"},\"getDataProvider(bytes32)\":{\"notice\":\"Returns the provider for a market object\"},\"getLastUpdatedTimestamp(bytes32)\":{\"notice\":\"Returns the timestamp on which the last data point for a data set was submitted.\"},\"isRegistered(bytes32)\":{\"notice\":\"@notice Returns true if there is data registered for a given setId\"},\"publishDataPoint(bytes32,uint256,int256)\":{\"notice\":\"Stores a new data point of a data set for a given timestamp.\"},\"setDataProvider(bytes32,address)\":{\"notice\":\"Registers / updates a market object provider.\"}},\"notice\":\"Registry for data which is published by an registered MarketObjectProvider\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistry.sol\":\"DataRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistry.sol\":{\"keccak256\":\"0x0c583f37b9c5b8b53647ab38f836eec5731f1a1d7896def29ee26916888539f6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b7d5b224d8d7fd4e59940f511054007c5368de4479e7ede3962cdaef817ac36f\",\"dweb:/ipfs/QmVr8rhMJPhCqKp289qvNvJhdFZAvWjh5scvWjNKRhcCeM\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistryStorage.sol\":{\"keccak256\":\"0xb33c89925a9e7c267d96d1461fce5839c6cef7f0365bf62a507a839b9cd925e7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7ea1957775722da928f53d4263162ebb94ffb5148d6e75dd815a2906a62e1e46\",\"dweb:/ipfs/QmXTRFKAC24PR9pqfHW2W73jsHaFqXdjjahqPJjKpZSLRk\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/IDataRegistry.sol\":{\"keccak256\":\"0x303e7925666252d8394929acfd8d32013b2225b202bb2fb873a4b9a257d324db\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://982d93073ffd66715b02953f989744ac3acc9556c9b41cf522914ec0e552b7b0\",\"dweb:/ipfs/QmdNoYVj3yQfkWGXNcueKmQgDs6kVyPvNzGduJvQscxAoR\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0xc6fb4c940628ca2cde81ed6d20fc9ff456b60f55aafef555f43a86a2dda7ad9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f17dda58954a84ffca3d53c0b6435bad7f5c42ab3a9c4603db2f1aef00edae4e\",\"dweb:/ipfs/QmehW99QmmzKvnqTsprsApDF7mK2JVo6nnrZ47znhLTFjh\"]},\"openzeppelin-solidity/contracts/access/Ownable.sol\":{\"keccak256\":\"0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3\",\"dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b5060006100246001600160e01b0361007716565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061007b565b3390565b6107428061008a6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b1461010c578063af37897814610121578063d38db86d14610134578063ecef34f214610147578063f2fde38b1461015a57610093565b806308a4ec101461009857806327258b22146100c2578063715018a6146100e2578063816a7e01146100ec575b600080fd5b6100ab6100a63660046105ad565b61016d565b6040516100b9929190610618565b60405180910390f35b6100d56100d036600461055b565b610196565b6040516100b9919061060d565b6100ea6101b5565b005b6100ff6100fa36600461055b565b61023d565b6040516100b99190610703565b610114610252565b6040516100b991906105f9565b6100ea61012f366004610573565b610261565b6100ea6101423660046105ce565b61032f565b61011461015536600461055b565b610454565b6100ea61016836600461052d565b610472565b60009182526020828152604080842092845291905290208054600190910154909160ff90911690565b600090815260208190526040902060020154600160a01b900460ff1690565b6101bd610529565b6001546001600160a01b039081169116146101f35760405162461bcd60e51b81526004016101ea906106ce565b60405180910390fd5b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180546001600160a01b0319169055565b60009081526020819052604090206001015490565b6001546001600160a01b031690565b610269610529565b6001546001600160a01b039081169116146102965760405162461bcd60e51b81526004016101ea906106ce565b600082815260208190526040902060020180546001600160a01b0319166001600160a01b0383161790819055600160a01b900460ff166102f3576000828152602081905260409020600201805460ff60a01b1916600160a01b1790555b817f6d3523ac54f3703c06e93ef7e0e67f963e698a668616fbc72dafb71eb6bd30968260405161032391906105f9565b60405180910390a25050565b6000838152602081905260409020600201546001600160a01b031633146103685760405162461bcd60e51b81526004016101ea9061067c565b60408051808201825282815260016020808301828152600088815280835285812088825280845295812094518555905193909201805460ff19169315159390931790925585815290526002015460ff600160a01b909104166103e7576000838152602081905260409020600201805460ff60a01b1916600160a01b1790555b6000838152602081905260409020600101548211156104155760008381526020819052604090206001018290555b827f183291f60aff981c3c2d6cb02edd75633d383a51f608e397789555ef0e7756028284604051610447929190610628565b60405180910390a2505050565b6000908152602081905260409020600201546001600160a01b031690565b61047a610529565b6001546001600160a01b039081169116146104a75760405162461bcd60e51b81526004016101ea906106ce565b6001600160a01b0381166104cd5760405162461bcd60e51b81526004016101ea90610636565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60006020828403121561053e578081fd5b81356001600160a01b0381168114610554578182fd5b9392505050565b60006020828403121561056c578081fd5b5035919050565b60008060408385031215610585578081fd5b8235915060208301356001600160a01b03811681146105a2578182fd5b809150509250929050565b600080604083850312156105bf578182fd5b50508035926020909101359150565b6000806000606084860312156105e2578081fd5b505081359360208301359350604090920135919050565b6001600160a01b0391909116815260200190565b901515815260200190565b9182521515602082015260400190565b918252602082015260400190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526032908201527f4461746152656769737472792e7075626c69736844617461506f696e743a20556040820152712720aaaa2427a924ad22a22fa9a2a72222a960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b9081526020019056fea26469706673582212201c04f731aa07a7327f3f3adb59ade273702f03d3c00cc003a84f5e2eba7077ee64736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b1461010c578063af37897814610121578063d38db86d14610134578063ecef34f214610147578063f2fde38b1461015a57610093565b806308a4ec101461009857806327258b22146100c2578063715018a6146100e2578063816a7e01146100ec575b600080fd5b6100ab6100a63660046105ad565b61016d565b6040516100b9929190610618565b60405180910390f35b6100d56100d036600461055b565b610196565b6040516100b9919061060d565b6100ea6101b5565b005b6100ff6100fa36600461055b565b61023d565b6040516100b99190610703565b610114610252565b6040516100b991906105f9565b6100ea61012f366004610573565b610261565b6100ea6101423660046105ce565b61032f565b61011461015536600461055b565b610454565b6100ea61016836600461052d565b610472565b60009182526020828152604080842092845291905290208054600190910154909160ff90911690565b600090815260208190526040902060020154600160a01b900460ff1690565b6101bd610529565b6001546001600160a01b039081169116146101f35760405162461bcd60e51b81526004016101ea906106ce565b60405180910390fd5b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180546001600160a01b0319169055565b60009081526020819052604090206001015490565b6001546001600160a01b031690565b610269610529565b6001546001600160a01b039081169116146102965760405162461bcd60e51b81526004016101ea906106ce565b600082815260208190526040902060020180546001600160a01b0319166001600160a01b0383161790819055600160a01b900460ff166102f3576000828152602081905260409020600201805460ff60a01b1916600160a01b1790555b817f6d3523ac54f3703c06e93ef7e0e67f963e698a668616fbc72dafb71eb6bd30968260405161032391906105f9565b60405180910390a25050565b6000838152602081905260409020600201546001600160a01b031633146103685760405162461bcd60e51b81526004016101ea9061067c565b60408051808201825282815260016020808301828152600088815280835285812088825280845295812094518555905193909201805460ff19169315159390931790925585815290526002015460ff600160a01b909104166103e7576000838152602081905260409020600201805460ff60a01b1916600160a01b1790555b6000838152602081905260409020600101548211156104155760008381526020819052604090206001018290555b827f183291f60aff981c3c2d6cb02edd75633d383a51f608e397789555ef0e7756028284604051610447929190610628565b60405180910390a2505050565b6000908152602081905260409020600201546001600160a01b031690565b61047a610529565b6001546001600160a01b039081169116146104a75760405162461bcd60e51b81526004016101ea906106ce565b6001600160a01b0381166104cd5760405162461bcd60e51b81526004016101ea90610636565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60006020828403121561053e578081fd5b81356001600160a01b0381168114610554578182fd5b9392505050565b60006020828403121561056c578081fd5b5035919050565b60008060408385031215610585578081fd5b8235915060208301356001600160a01b03811681146105a2578182fd5b809150509250929050565b600080604083850312156105bf578182fd5b50508035926020909101359150565b6000806000606084860312156105e2578081fd5b505081359360208301359350604090920135919050565b6001600160a01b0391909116815260200190565b901515815260200190565b9182521515602082015260400190565b918252602082015260400190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526032908201527f4461746152656769737472792e7075626c69736844617461506f696e743a20556040820152712720aaaa2427a924ad22a22fa9a2a72222a960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b9081526020019056fea26469706673582212201c04f731aa07a7327f3f3adb59ade273702f03d3c00cc003a84f5e2eba7077ee64736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "348:3356:25:-:0;;;;;;;;;;;;-1:-1:-1;865:17:116;885:12;-1:-1:-1;;;;;885:10:116;:12;:::i;:::-;907:6;:18;;-1:-1:-1;;;;;;907:18:116;-1:-1:-1;;;;;907:18:116;;;;;;;;940:43;;907:18;;-1:-1:-1;907:18:116;-1:-1:-1;;940:43:116;;-1:-1:-1;;940:43:116;831:159;348:3356:25;;768:104:115;855:10;768:104;:::o;348:3356:25:-;;;;;;;",
  "deployedSourceMap": "348:3356:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1184:304;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;772:152;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1689:145:116:-;;;:::i;:::-;;1690:181:25;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1066:77:116:-;;;:::i;:::-;;;;;;;:::i;2418:327:25:-;;;;;;:::i;:::-;;:::i;3052:650::-;;;;;;:::i;:::-;;:::i;2023:161::-;;;;;;:::i;:::-;;:::i;1983:240:116:-;;;;;;:::i;:::-;;:::i;1184:304:25:-;1326:6;1375:11;;;;;;;;;;;:33;;;;;;;;:43;;1432:39;;;;;1375:43;;1432:39;;;;;1184:304::o;772:152::-;873:4;900:11;;;;;;;;;;:17;;;-1:-1:-1;;;900:17:25;;;;;772:152::o;1689:145:116:-;1280:12;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;;;;;;;;;1779:6:::1;::::0;1758:40:::1;::::0;1795:1:::1;::::0;-1:-1:-1;;;;;1779:6:116::1;::::0;1758:40:::1;::::0;1795:1;;1758:40:::1;1808:6;:19:::0;;-1:-1:-1;;;;;;1808:19:116::1;::::0;;1689:145::o;1690:181:25:-;1802:7;1832:11;;;;;;;;;;:32;;;;1690:181::o;1066:77:116:-;1130:6;;-1:-1:-1;;;;;1130:6:116;1066:77;:::o;2418:327:25:-;1280:12:116;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;2564:4:25::1;:11:::0;;;::::1;::::0;;;;;;:20:::1;;:31:::0;;-1:-1:-1;;;;;;2564:31:25::1;-1:-1:-1::0;;;;;2564:31:25;::::1;;::::0;;;;-1:-1:-1;;;2610:17:25;::::1;;;2606:81;;2652:4;:11:::0;;;::::1;::::0;;;;;;:17:::1;;:24:::0;;-1:-1:-1;;;;2652:24:25::1;-1:-1:-1::0;;;2652:24:25::1;::::0;;2606:81:::1;2722:5;2702:36;2729:8;2702:36;;;;;;:::i;:::-;;;;;;;;2418:327:::0;;:::o;3052:650::-;3243:4;:11;;;;;;;;;;:20;;;-1:-1:-1;;;;;3243:20:25;3229:10;:34;3208:131;;;;-1:-1:-1;;;3208:131:25;;;;;;;:::i;:::-;3386:26;;;;;;;;;;;3407:4;3386:26;;;;;;;-1:-1:-1;3350:11:25;;;;;;;;;:33;;;;;;;;;:62;;;;;;;;;;;;-1:-1:-1;;3350:62:25;;;;;;;;;;;3427:11;;;;;:17;;;3350:62;-1:-1:-1;;;3427:17:25;;;;3423:81;;3469:4;:11;;;;;;;;;;:17;;:24;;-1:-1:-1;;;;3469:24:25;-1:-1:-1;;;3469:24:25;;;3423:81;3518:4;:11;;;;;;;;;;:32;;;:44;-1:-1:-1;3514:119:25;;;3578:4;:11;;;;;;;;;;:32;;:44;;;3514:119;3667:5;3648:47;3674:9;3685;3648:47;;;;;;;:::i;:::-;;;;;;;;3052:650;;;:::o;2023:161::-;2127:7;2157:11;;;;;;;;;;:20;;;-1:-1:-1;;;;;2157:20:25;;2023:161::o;1983:240:116:-;1280:12;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;-1:-1:-1;;;;;2071:22:116;::::1;2063:73;;;;-1:-1:-1::0;;;2063:73:116::1;;;;;;;:::i;:::-;2172:6;::::0;2151:38:::1;::::0;-1:-1:-1;;;;;2151:38:116;;::::1;::::0;2172:6:::1;::::0;2151:38:::1;::::0;2172:6:::1;::::0;2151:38:::1;2199:6;:17:::0;;-1:-1:-1;;;;;;2199:17:116::1;-1:-1:-1::0;;;;;2199:17:116;;;::::1;::::0;;;::::1;::::0;;1983:240::o;768:104:115:-;855:10;768:104;:::o;551:241:-1:-;;655:2;643:9;634:7;630:23;626:32;623:2;;;-1:-1;;661:12;623:2;72:20;;-1:-1;;;;;7063:54;;7267:35;;7257:2;;-1:-1;;7306:12;7257:2;713:63;617:175;-1:-1;;;617:175::o;799:241::-;;903:2;891:9;882:7;878:23;874:32;871:2;;;-1:-1;;909:12;871:2;-1:-1;209:20;;865:175;-1:-1;865:175::o;1047:366::-;;;1168:2;1156:9;1147:7;1143:23;1139:32;1136:2;;;-1:-1;;1174:12;1136:2;209:20;;;-1:-1;1326:2;1365:22;;72:20;-1:-1;;;;;7063:54;;7267:35;;7257:2;;-1:-1;;7306:12;7257:2;1334:63;;;;1130:283;;;;;:::o;1420:366::-;;;1541:2;1529:9;1520:7;1516:23;1512:32;1509:2;;;-1:-1;;1547:12;1509:2;-1:-1;;209:20;;;1699:2;1738:22;;;481:20;;-1:-1;1503:283::o;1793:489::-;;;;1930:2;1918:9;1909:7;1905:23;1901:32;1898:2;;;-1:-1;;1936:12;1898:2;-1:-1;;209:20;;;2088:2;2127:22;;481:20;;-1:-1;2196:2;2234:22;;;345:20;;1892:390;-1:-1;1892:390::o;3878:222::-;-1:-1;;;;;7063:54;;;;2360:37;;4005:2;3990:18;;3976:124::o;4107:210::-;6818:13;;6811:21;2474:34;;4228:2;4213:18;;4199:118::o;4324:317::-;2589:36;;;6818:13;6811:21;4627:2;4612:18;;2474:34;4471:2;4456:18;;4442:199::o;4648:329::-;2589:36;;;4963:2;4948:18;;2589:36;4801:2;4786:18;;4772:205::o;4984:416::-;5184:2;5198:47;;;2862:2;5169:18;;;6586:19;2898:34;6626:14;;;2878:55;-1:-1;;;2953:12;;;2946:30;2995:12;;;5155:245::o;5407:416::-;5607:2;5621:47;;;3246:2;5592:18;;;6586:19;3282:34;6626:14;;;3262:55;-1:-1;;;3337:12;;;3330:42;3391:12;;;5578:245::o;5830:416::-;6030:2;6044:47;;;6015:18;;;6586:19;3678:34;6626:14;;;3658:55;3732:12;;;6001:245::o;6253:222::-;2589:36;;;6380:2;6365:18;;6351:124::o",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"openzeppelin-solidity/contracts/access/Ownable.sol\";\n\nimport \"./IDataRegistry.sol\";\nimport \"./DataRegistryStorage.sol\";\n\n\n/**\n * @title DataRegistry\n * @notice Registry for data which is published by an registered MarketObjectProvider\n */\ncontract DataRegistry is DataRegistryStorage, IDataRegistry, Ownable {\n\n    event UpdatedDataProvider(bytes32 indexed setId, address provider);\n    event PublishedDataPoint(bytes32 indexed setId, int256 dataPoint, uint256 timestamp);\n\n\n    /**\n     * @notice @notice Returns true if there is data registered for a given setId\n     * @param setId setId of the data set\n     * @return true if market object exists\n     */\n    function isRegistered(bytes32 setId)\n        external\n        view\n        override\n        returns (bool)\n    {\n        return sets[setId].isSet;\n    }\n\n    /**\n     * @notice Returns a data point of a market object for a given timestamp.\n     * @param setId id of the data set\n     * @param timestamp timestamp of the data point\n     * @return data point, bool indicating whether data point exists\n     */\n    function getDataPoint(\n        bytes32 setId,\n        uint256 timestamp\n    )\n        external\n        view\n        override\n        returns (int256, bool)\n    {\n        return (\n            sets[setId].dataPoints[timestamp].dataPoint,\n            sets[setId].dataPoints[timestamp].isSet\n        );\n    }\n\n    /**\n     * @notice Returns the timestamp on which the last data point for a data set\n     * was submitted.\n     * @param setId id of the data set\n     * @return last updated timestamp\n     */\n    function getLastUpdatedTimestamp(bytes32 setId)\n        external\n        view\n        override\n        returns (uint256)\n    {\n        return sets[setId].lastUpdatedTimestamp;\n    }\n\n    /**\n     * @notice Returns the provider for a market object\n     * @param setId id of the data set\n     * @return address of provider\n     */\n    function getDataProvider(bytes32 setId)\n        external\n        view\n        override\n        returns (address)\n    {\n        return sets[setId].provider;\n    }\n\n    /**\n     * @notice Registers / updates a market object provider.\n     * @dev Can only be called by the owner of the DataRegistry.\n     * @param setId id of the data set\n     * @param provider address of the provider\n     */\n    function setDataProvider(\n        bytes32 setId,\n        address provider\n    )\n        external\n        override\n        onlyOwner\n    {\n        sets[setId].provider = provider;\n\n        if (sets[setId].isSet == false) {\n            sets[setId].isSet = true;\n        }\n\n        emit UpdatedDataProvider(setId, provider);\n    }\n\n    /**\n     * @notice Stores a new data point of a data set for a given timestamp.\n     * @dev Can only be called by a whitelisted data provider.\n     * @param setId id of the data set\n     * @param timestamp timestamp of the data point\n     * @param dataPoint the data point of the data set\n     */\n    function publishDataPoint(\n        bytes32 setId,\n        uint256 timestamp,\n        int256 dataPoint\n    )\n        external\n        override\n    {\n        require(\n            msg.sender == sets[setId].provider,\n            \"DataRegistry.publishDataPoint: UNAUTHORIZED_SENDER\"\n        );\n\n        sets[setId].dataPoints[timestamp] = DataPoint(dataPoint, true);\n\n        if (sets[setId].isSet == false) {\n            sets[setId].isSet = true;\n        }\n\n        if (sets[setId].lastUpdatedTimestamp < timestamp) {\n            sets[setId].lastUpdatedTimestamp = timestamp;\n        }\n\n        emit PublishedDataPoint(setId, dataPoint, timestamp);\n    }\n}\n",
  "sourcePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistry.sol",
  "ast": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistry.sol",
    "exportedSymbols": {
      "DataRegistry": [
        7688
      ]
    },
    "id": 7689,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7477,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:25"
      },
      {
        "id": 7478,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:25"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/access/Ownable.sol",
        "file": "openzeppelin-solidity/contracts/access/Ownable.sol",
        "id": 7479,
        "nodeType": "ImportDirective",
        "scope": 7689,
        "sourceUnit": 38486,
        "src": "101:60:25",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/IDataRegistry.sol",
        "file": "./IDataRegistry.sol",
        "id": 7480,
        "nodeType": "ImportDirective",
        "scope": 7689,
        "sourceUnit": 7767,
        "src": "163:29:25",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistryStorage.sol",
        "file": "./DataRegistryStorage.sol",
        "id": 7481,
        "nodeType": "ImportDirective",
        "scope": 7689,
        "sourceUnit": 7714,
        "src": "193:35:25",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7483,
              "name": "DataRegistryStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7713,
              "src": "373:19:25",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DataRegistryStorage_$7713",
                "typeString": "contract DataRegistryStorage"
              }
            },
            "id": 7484,
            "nodeType": "InheritanceSpecifier",
            "src": "373:19:25"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7485,
              "name": "IDataRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7766,
              "src": "394:13:25",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                "typeString": "contract IDataRegistry"
              }
            },
            "id": 7486,
            "nodeType": "InheritanceSpecifier",
            "src": "394:13:25"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7487,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 38485,
              "src": "409:7:25",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$38485",
                "typeString": "contract Ownable"
              }
            },
            "id": 7488,
            "nodeType": "InheritanceSpecifier",
            "src": "409:7:25"
          }
        ],
        "contractDependencies": [
          7713,
          7766,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 7482,
          "nodeType": "StructuredDocumentation",
          "src": "231:116:25",
          "text": " @title DataRegistry\n @notice Registry for data which is published by an registered MarketObjectProvider"
        },
        "fullyImplemented": true,
        "id": 7688,
        "linearizedBaseContracts": [
          7688,
          38485,
          38376,
          7766,
          7713
        ],
        "name": "DataRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 7494,
            "name": "UpdatedDataProvider",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7493,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7490,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "setId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7494,
                  "src": "450:21:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7489,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "450:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7492,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "provider",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7494,
                  "src": "473:16:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7491,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "473:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "449:41:25"
            },
            "src": "424:67:25"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7502,
            "name": "PublishedDataPoint",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7501,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7496,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "setId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7502,
                  "src": "521:21:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7495,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "521:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7498,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "dataPoint",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7502,
                  "src": "544:16:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 7497,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "544:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7500,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7502,
                  "src": "562:17:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7499,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "562:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "520:60:25"
            },
            "src": "496:85:25"
          },
          {
            "baseFunctions": [
              7724
            ],
            "body": {
              "id": 7516,
              "nodeType": "Block",
              "src": "883:41:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7511,
                        "name": "sets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7712,
                        "src": "900:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                          "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                        }
                      },
                      "id": 7513,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7512,
                        "name": "setId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7505,
                        "src": "905:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "900:11:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$7708_storage",
                        "typeString": "struct DataRegistryStorage.Set storage ref"
                      }
                    },
                    "id": 7514,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "isSet",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 7707,
                    "src": "900:17:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 7510,
                  "id": 7515,
                  "nodeType": "Return",
                  "src": "893:24:25"
                }
              ]
            },
            "documentation": {
              "id": 7503,
              "nodeType": "StructuredDocumentation",
              "src": "588:179:25",
              "text": " @notice @notice Returns true if there is data registered for a given setId\n @param setId setId of the data set\n @return true if market object exists"
            },
            "functionSelector": "27258b22",
            "id": 7517,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isRegistered",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7507,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "847:8:25"
            },
            "parameters": {
              "id": 7506,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7505,
                  "mutability": "mutable",
                  "name": "setId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7517,
                  "src": "794:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7504,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "794:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "793:15:25"
            },
            "returnParameters": {
              "id": 7510,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7509,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7517,
                  "src": "873:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7508,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "873:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "872:6:25"
            },
            "scope": 7688,
            "src": "772:152:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              7765
            ],
            "body": {
              "id": 7546,
              "nodeType": "Block",
              "src": "1344:144:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 7530,
                                "name": "sets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7712,
                                "src": "1375:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                                  "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                                }
                              },
                              "id": 7532,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 7531,
                                "name": "setId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7520,
                                "src": "1380:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1375:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$7708_storage",
                                "typeString": "struct DataRegistryStorage.Set storage ref"
                              }
                            },
                            "id": 7533,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "dataPoints",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7701,
                            "src": "1375:22:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DataPoint_$7697_storage_$",
                              "typeString": "mapping(uint256 => struct DataRegistryStorage.DataPoint storage ref)"
                            }
                          },
                          "id": 7535,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7534,
                            "name": "timestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7522,
                            "src": "1398:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1375:33:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DataPoint_$7697_storage",
                            "typeString": "struct DataRegistryStorage.DataPoint storage ref"
                          }
                        },
                        "id": 7536,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "dataPoint",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7694,
                        "src": "1375:43:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 7537,
                                "name": "sets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7712,
                                "src": "1432:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                                  "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                                }
                              },
                              "id": 7539,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 7538,
                                "name": "setId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7520,
                                "src": "1437:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1432:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$7708_storage",
                                "typeString": "struct DataRegistryStorage.Set storage ref"
                              }
                            },
                            "id": 7540,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "dataPoints",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7701,
                            "src": "1432:22:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DataPoint_$7697_storage_$",
                              "typeString": "mapping(uint256 => struct DataRegistryStorage.DataPoint storage ref)"
                            }
                          },
                          "id": 7542,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7541,
                            "name": "timestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7522,
                            "src": "1455:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1432:33:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DataPoint_$7697_storage",
                            "typeString": "struct DataRegistryStorage.DataPoint storage ref"
                          }
                        },
                        "id": 7543,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "isSet",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7696,
                        "src": "1432:39:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 7544,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "1361:120:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_int256_$_t_bool_$",
                      "typeString": "tuple(int256,bool)"
                    }
                  },
                  "functionReturnParameters": 7529,
                  "id": 7545,
                  "nodeType": "Return",
                  "src": "1354:127:25"
                }
              ]
            },
            "documentation": {
              "id": 7518,
              "nodeType": "StructuredDocumentation",
              "src": "930:249:25",
              "text": " @notice Returns a data point of a market object for a given timestamp.\n @param setId id of the data set\n @param timestamp timestamp of the data point\n @return data point, bool indicating whether data point exists"
            },
            "functionSelector": "08a4ec10",
            "id": 7547,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDataPoint",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7524,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1300:8:25"
            },
            "parameters": {
              "id": 7523,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7520,
                  "mutability": "mutable",
                  "name": "setId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7547,
                  "src": "1215:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7519,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1215:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7522,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7547,
                  "src": "1238:17:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7521,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1238:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1205:56:25"
            },
            "returnParameters": {
              "id": 7529,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7526,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7547,
                  "src": "1326:6:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 7525,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1326:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7528,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7547,
                  "src": "1334:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7527,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1334:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1325:14:25"
            },
            "scope": 7688,
            "src": "1184:304:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              7731
            ],
            "body": {
              "id": 7561,
              "nodeType": "Block",
              "src": "1815:56:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7556,
                        "name": "sets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7712,
                        "src": "1832:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                          "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                        }
                      },
                      "id": 7558,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7557,
                        "name": "setId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7550,
                        "src": "1837:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1832:11:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$7708_storage",
                        "typeString": "struct DataRegistryStorage.Set storage ref"
                      }
                    },
                    "id": 7559,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "lastUpdatedTimestamp",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 7703,
                    "src": "1832:32:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7555,
                  "id": 7560,
                  "nodeType": "Return",
                  "src": "1825:39:25"
                }
              ]
            },
            "documentation": {
              "id": 7548,
              "nodeType": "StructuredDocumentation",
              "src": "1494:191:25",
              "text": " @notice Returns the timestamp on which the last data point for a data set\n was submitted.\n @param setId id of the data set\n @return last updated timestamp"
            },
            "functionSelector": "816a7e01",
            "id": 7562,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLastUpdatedTimestamp",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7552,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1776:8:25"
            },
            "parameters": {
              "id": 7551,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7550,
                  "mutability": "mutable",
                  "name": "setId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7562,
                  "src": "1723:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7549,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1723:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1722:15:25"
            },
            "returnParameters": {
              "id": 7555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7554,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7562,
                  "src": "1802:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1802:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1801:9:25"
            },
            "scope": 7688,
            "src": "1690:181:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              7738
            ],
            "body": {
              "id": 7576,
              "nodeType": "Block",
              "src": "2140:44:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7571,
                        "name": "sets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7712,
                        "src": "2157:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                          "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                        }
                      },
                      "id": 7573,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7572,
                        "name": "setId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7565,
                        "src": "2162:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2157:11:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$7708_storage",
                        "typeString": "struct DataRegistryStorage.Set storage ref"
                      }
                    },
                    "id": 7574,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "provider",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 7705,
                    "src": "2157:20:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 7570,
                  "id": 7575,
                  "nodeType": "Return",
                  "src": "2150:27:25"
                }
              ]
            },
            "documentation": {
              "id": 7563,
              "nodeType": "StructuredDocumentation",
              "src": "1877:141:25",
              "text": " @notice Returns the provider for a market object\n @param setId id of the data set\n @return address of provider"
            },
            "functionSelector": "ecef34f2",
            "id": 7577,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDataProvider",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7567,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2101:8:25"
            },
            "parameters": {
              "id": 7566,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7565,
                  "mutability": "mutable",
                  "name": "setId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7577,
                  "src": "2048:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7564,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2048:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2047:15:25"
            },
            "returnParameters": {
              "id": 7570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7569,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7577,
                  "src": "2127:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7568,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2127:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2126:9:25"
            },
            "scope": 7688,
            "src": "2023:161:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              7745
            ],
            "body": {
              "id": 7615,
              "nodeType": "Block",
              "src": "2554:191:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7588,
                          "name": "sets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7712,
                          "src": "2564:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                            "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                          }
                        },
                        "id": 7590,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7589,
                          "name": "setId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7580,
                          "src": "2569:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2564:11:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$7708_storage",
                          "typeString": "struct DataRegistryStorage.Set storage ref"
                        }
                      },
                      "id": 7591,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "provider",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7705,
                      "src": "2564:20:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 7592,
                      "name": "provider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7582,
                      "src": "2587:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2564:31:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 7594,
                  "nodeType": "ExpressionStatement",
                  "src": "2564:31:25"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 7600,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7595,
                          "name": "sets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7712,
                          "src": "2610:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                            "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                          }
                        },
                        "id": 7597,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7596,
                          "name": "setId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7580,
                          "src": "2615:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2610:11:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$7708_storage",
                          "typeString": "struct DataRegistryStorage.Set storage ref"
                        }
                      },
                      "id": 7598,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isSet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7707,
                      "src": "2610:17:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 7599,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2631:5:25",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "2610:26:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7609,
                  "nodeType": "IfStatement",
                  "src": "2606:81:25",
                  "trueBody": {
                    "id": 7608,
                    "nodeType": "Block",
                    "src": "2638:49:25",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 7601,
                                "name": "sets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7712,
                                "src": "2652:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                                  "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                                }
                              },
                              "id": 7603,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 7602,
                                "name": "setId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7580,
                                "src": "2657:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2652:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$7708_storage",
                                "typeString": "struct DataRegistryStorage.Set storage ref"
                              }
                            },
                            "id": 7604,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "isSet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7707,
                            "src": "2652:17:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 7605,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2672:4:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "2652:24:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7607,
                        "nodeType": "ExpressionStatement",
                        "src": "2652:24:25"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7611,
                        "name": "setId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7580,
                        "src": "2722:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7612,
                        "name": "provider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7582,
                        "src": "2729:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 7610,
                      "name": "UpdatedDataProvider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7494,
                      "src": "2702:19:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 7613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2702:36:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7614,
                  "nodeType": "EmitStatement",
                  "src": "2697:41:25"
                }
              ]
            },
            "documentation": {
              "id": 7578,
              "nodeType": "StructuredDocumentation",
              "src": "2190:223:25",
              "text": " @notice Registers / updates a market object provider.\n @dev Can only be called by the owner of the DataRegistry.\n @param setId id of the data set\n @param provider address of the provider"
            },
            "functionSelector": "af378978",
            "id": 7616,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 7586,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7585,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38434,
                  "src": "2540:9:25",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2540:9:25"
              }
            ],
            "name": "setDataProvider",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7584,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2523:8:25"
            },
            "parameters": {
              "id": 7583,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7580,
                  "mutability": "mutable",
                  "name": "setId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7616,
                  "src": "2452:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7579,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2452:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7582,
                  "mutability": "mutable",
                  "name": "provider",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7616,
                  "src": "2475:16:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7581,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2475:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2442:55:25"
            },
            "returnParameters": {
              "id": 7587,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2554:0:25"
            },
            "scope": 7688,
            "src": "2418:327:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              7754
            ],
            "body": {
              "id": 7686,
              "nodeType": "Block",
              "src": "3198:504:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7634,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7628,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "3229:3:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 7629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3229:10:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7630,
                              "name": "sets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7712,
                              "src": "3243:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                                "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                              }
                            },
                            "id": 7632,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7631,
                              "name": "setId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7619,
                              "src": "3248:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3243:11:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$7708_storage",
                              "typeString": "struct DataRegistryStorage.Set storage ref"
                            }
                          },
                          "id": 7633,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "provider",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7705,
                          "src": "3243:20:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3229:34:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4461746152656769737472792e7075626c69736844617461506f696e743a20554e415554484f52495a45445f53454e444552",
                        "id": 7635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3277:52:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_454ee3a12d42b5147dc866ae3fc65974d71672277d7bfeb941f8c08478335db8",
                          "typeString": "literal_string \"DataRegistry.publishDataPoint: UNAUTHORIZED_SENDER\""
                        },
                        "value": "DataRegistry.publishDataPoint: UNAUTHORIZED_SENDER"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_454ee3a12d42b5147dc866ae3fc65974d71672277d7bfeb941f8c08478335db8",
                          "typeString": "literal_string \"DataRegistry.publishDataPoint: UNAUTHORIZED_SENDER\""
                        }
                      ],
                      "id": 7627,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3208:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3208:131:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7637,
                  "nodeType": "ExpressionStatement",
                  "src": "3208:131:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7648,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7638,
                            "name": "sets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7712,
                            "src": "3350:4:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                              "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                            }
                          },
                          "id": 7640,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7639,
                            "name": "setId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7619,
                            "src": "3355:5:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3350:11:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$7708_storage",
                            "typeString": "struct DataRegistryStorage.Set storage ref"
                          }
                        },
                        "id": 7641,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "dataPoints",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7701,
                        "src": "3350:22:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DataPoint_$7697_storage_$",
                          "typeString": "mapping(uint256 => struct DataRegistryStorage.DataPoint storage ref)"
                        }
                      },
                      "id": 7643,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7642,
                        "name": "timestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7621,
                        "src": "3373:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3350:33:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DataPoint_$7697_storage",
                        "typeString": "struct DataRegistryStorage.DataPoint storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7645,
                          "name": "dataPoint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7623,
                          "src": "3396:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 7646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3407:4:25",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 7644,
                        "name": "DataPoint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7697,
                        "src": "3386:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_DataPoint_$7697_storage_ptr_$",
                          "typeString": "type(struct DataRegistryStorage.DataPoint storage pointer)"
                        }
                      },
                      "id": 7647,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3386:26:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DataPoint_$7697_memory_ptr",
                        "typeString": "struct DataRegistryStorage.DataPoint memory"
                      }
                    },
                    "src": "3350:62:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DataPoint_$7697_storage",
                      "typeString": "struct DataRegistryStorage.DataPoint storage ref"
                    }
                  },
                  "id": 7649,
                  "nodeType": "ExpressionStatement",
                  "src": "3350:62:25"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 7655,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7650,
                          "name": "sets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7712,
                          "src": "3427:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                            "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                          }
                        },
                        "id": 7652,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7651,
                          "name": "setId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7619,
                          "src": "3432:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3427:11:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$7708_storage",
                          "typeString": "struct DataRegistryStorage.Set storage ref"
                        }
                      },
                      "id": 7653,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isSet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7707,
                      "src": "3427:17:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 7654,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3448:5:25",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "3427:26:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7664,
                  "nodeType": "IfStatement",
                  "src": "3423:81:25",
                  "trueBody": {
                    "id": 7663,
                    "nodeType": "Block",
                    "src": "3455:49:25",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 7656,
                                "name": "sets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7712,
                                "src": "3469:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                                  "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                                }
                              },
                              "id": 7658,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 7657,
                                "name": "setId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7619,
                                "src": "3474:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3469:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$7708_storage",
                                "typeString": "struct DataRegistryStorage.Set storage ref"
                              }
                            },
                            "id": 7659,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "isSet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7707,
                            "src": "3469:17:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 7660,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3489:4:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "3469:24:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7662,
                        "nodeType": "ExpressionStatement",
                        "src": "3469:24:25"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7670,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7665,
                          "name": "sets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7712,
                          "src": "3518:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                            "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                          }
                        },
                        "id": 7667,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7666,
                          "name": "setId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7619,
                          "src": "3523:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3518:11:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$7708_storage",
                          "typeString": "struct DataRegistryStorage.Set storage ref"
                        }
                      },
                      "id": 7668,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "lastUpdatedTimestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7703,
                      "src": "3518:32:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 7669,
                      "name": "timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7621,
                      "src": "3553:9:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3518:44:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7679,
                  "nodeType": "IfStatement",
                  "src": "3514:119:25",
                  "trueBody": {
                    "id": 7678,
                    "nodeType": "Block",
                    "src": "3564:69:25",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 7671,
                                "name": "sets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7712,
                                "src": "3578:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                                  "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                                }
                              },
                              "id": 7673,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 7672,
                                "name": "setId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7619,
                                "src": "3583:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3578:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$7708_storage",
                                "typeString": "struct DataRegistryStorage.Set storage ref"
                              }
                            },
                            "id": 7674,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "lastUpdatedTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7703,
                            "src": "3578:32:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 7675,
                            "name": "timestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7621,
                            "src": "3613:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3578:44:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7677,
                        "nodeType": "ExpressionStatement",
                        "src": "3578:44:25"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7681,
                        "name": "setId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7619,
                        "src": "3667:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7682,
                        "name": "dataPoint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7623,
                        "src": "3674:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7683,
                        "name": "timestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7621,
                        "src": "3685:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7680,
                      "name": "PublishedDataPoint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7502,
                      "src": "3648:18:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_int256_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,int256,uint256)"
                      }
                    },
                    "id": 7684,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3648:47:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7685,
                  "nodeType": "EmitStatement",
                  "src": "3643:52:25"
                }
              ]
            },
            "documentation": {
              "id": 7617,
              "nodeType": "StructuredDocumentation",
              "src": "2751:296:25",
              "text": " @notice Stores a new data point of a data set for a given timestamp.\n @dev Can only be called by a whitelisted data provider.\n @param setId id of the data set\n @param timestamp timestamp of the data point\n @param dataPoint the data point of the data set"
            },
            "functionSelector": "d38db86d",
            "id": 7687,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "publishDataPoint",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7625,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3185:8:25"
            },
            "parameters": {
              "id": 7624,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7619,
                  "mutability": "mutable",
                  "name": "setId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7687,
                  "src": "3087:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7618,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3087:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7621,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7687,
                  "src": "3110:17:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7620,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3110:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7623,
                  "mutability": "mutable",
                  "name": "dataPoint",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7687,
                  "src": "3137:16:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 7622,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3137:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3077:82:25"
            },
            "returnParameters": {
              "id": 7626,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3198:0:25"
            },
            "scope": 7688,
            "src": "3052:650:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 7689,
        "src": "348:3356:25"
      }
    ],
    "src": "41:3664:25"
  },
  "legacyAST": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistry.sol",
    "exportedSymbols": {
      "DataRegistry": [
        7688
      ]
    },
    "id": 7689,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7477,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:25"
      },
      {
        "id": 7478,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:25"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/access/Ownable.sol",
        "file": "openzeppelin-solidity/contracts/access/Ownable.sol",
        "id": 7479,
        "nodeType": "ImportDirective",
        "scope": 7689,
        "sourceUnit": 38486,
        "src": "101:60:25",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/IDataRegistry.sol",
        "file": "./IDataRegistry.sol",
        "id": 7480,
        "nodeType": "ImportDirective",
        "scope": 7689,
        "sourceUnit": 7767,
        "src": "163:29:25",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistryStorage.sol",
        "file": "./DataRegistryStorage.sol",
        "id": 7481,
        "nodeType": "ImportDirective",
        "scope": 7689,
        "sourceUnit": 7714,
        "src": "193:35:25",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7483,
              "name": "DataRegistryStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7713,
              "src": "373:19:25",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DataRegistryStorage_$7713",
                "typeString": "contract DataRegistryStorage"
              }
            },
            "id": 7484,
            "nodeType": "InheritanceSpecifier",
            "src": "373:19:25"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7485,
              "name": "IDataRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7766,
              "src": "394:13:25",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                "typeString": "contract IDataRegistry"
              }
            },
            "id": 7486,
            "nodeType": "InheritanceSpecifier",
            "src": "394:13:25"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7487,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 38485,
              "src": "409:7:25",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$38485",
                "typeString": "contract Ownable"
              }
            },
            "id": 7488,
            "nodeType": "InheritanceSpecifier",
            "src": "409:7:25"
          }
        ],
        "contractDependencies": [
          7713,
          7766,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 7482,
          "nodeType": "StructuredDocumentation",
          "src": "231:116:25",
          "text": " @title DataRegistry\n @notice Registry for data which is published by an registered MarketObjectProvider"
        },
        "fullyImplemented": true,
        "id": 7688,
        "linearizedBaseContracts": [
          7688,
          38485,
          38376,
          7766,
          7713
        ],
        "name": "DataRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 7494,
            "name": "UpdatedDataProvider",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7493,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7490,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "setId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7494,
                  "src": "450:21:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7489,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "450:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7492,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "provider",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7494,
                  "src": "473:16:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7491,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "473:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "449:41:25"
            },
            "src": "424:67:25"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7502,
            "name": "PublishedDataPoint",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7501,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7496,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "setId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7502,
                  "src": "521:21:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7495,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "521:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7498,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "dataPoint",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7502,
                  "src": "544:16:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 7497,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "544:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7500,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7502,
                  "src": "562:17:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7499,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "562:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "520:60:25"
            },
            "src": "496:85:25"
          },
          {
            "baseFunctions": [
              7724
            ],
            "body": {
              "id": 7516,
              "nodeType": "Block",
              "src": "883:41:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7511,
                        "name": "sets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7712,
                        "src": "900:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                          "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                        }
                      },
                      "id": 7513,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7512,
                        "name": "setId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7505,
                        "src": "905:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "900:11:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$7708_storage",
                        "typeString": "struct DataRegistryStorage.Set storage ref"
                      }
                    },
                    "id": 7514,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "isSet",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 7707,
                    "src": "900:17:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 7510,
                  "id": 7515,
                  "nodeType": "Return",
                  "src": "893:24:25"
                }
              ]
            },
            "documentation": {
              "id": 7503,
              "nodeType": "StructuredDocumentation",
              "src": "588:179:25",
              "text": " @notice @notice Returns true if there is data registered for a given setId\n @param setId setId of the data set\n @return true if market object exists"
            },
            "functionSelector": "27258b22",
            "id": 7517,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isRegistered",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7507,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "847:8:25"
            },
            "parameters": {
              "id": 7506,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7505,
                  "mutability": "mutable",
                  "name": "setId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7517,
                  "src": "794:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7504,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "794:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "793:15:25"
            },
            "returnParameters": {
              "id": 7510,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7509,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7517,
                  "src": "873:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7508,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "873:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "872:6:25"
            },
            "scope": 7688,
            "src": "772:152:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              7765
            ],
            "body": {
              "id": 7546,
              "nodeType": "Block",
              "src": "1344:144:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 7530,
                                "name": "sets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7712,
                                "src": "1375:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                                  "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                                }
                              },
                              "id": 7532,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 7531,
                                "name": "setId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7520,
                                "src": "1380:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1375:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$7708_storage",
                                "typeString": "struct DataRegistryStorage.Set storage ref"
                              }
                            },
                            "id": 7533,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "dataPoints",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7701,
                            "src": "1375:22:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DataPoint_$7697_storage_$",
                              "typeString": "mapping(uint256 => struct DataRegistryStorage.DataPoint storage ref)"
                            }
                          },
                          "id": 7535,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7534,
                            "name": "timestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7522,
                            "src": "1398:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1375:33:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DataPoint_$7697_storage",
                            "typeString": "struct DataRegistryStorage.DataPoint storage ref"
                          }
                        },
                        "id": 7536,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "dataPoint",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7694,
                        "src": "1375:43:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 7537,
                                "name": "sets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7712,
                                "src": "1432:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                                  "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                                }
                              },
                              "id": 7539,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 7538,
                                "name": "setId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7520,
                                "src": "1437:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1432:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$7708_storage",
                                "typeString": "struct DataRegistryStorage.Set storage ref"
                              }
                            },
                            "id": 7540,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "dataPoints",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7701,
                            "src": "1432:22:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DataPoint_$7697_storage_$",
                              "typeString": "mapping(uint256 => struct DataRegistryStorage.DataPoint storage ref)"
                            }
                          },
                          "id": 7542,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7541,
                            "name": "timestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7522,
                            "src": "1455:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1432:33:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DataPoint_$7697_storage",
                            "typeString": "struct DataRegistryStorage.DataPoint storage ref"
                          }
                        },
                        "id": 7543,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "isSet",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7696,
                        "src": "1432:39:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 7544,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "1361:120:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_int256_$_t_bool_$",
                      "typeString": "tuple(int256,bool)"
                    }
                  },
                  "functionReturnParameters": 7529,
                  "id": 7545,
                  "nodeType": "Return",
                  "src": "1354:127:25"
                }
              ]
            },
            "documentation": {
              "id": 7518,
              "nodeType": "StructuredDocumentation",
              "src": "930:249:25",
              "text": " @notice Returns a data point of a market object for a given timestamp.\n @param setId id of the data set\n @param timestamp timestamp of the data point\n @return data point, bool indicating whether data point exists"
            },
            "functionSelector": "08a4ec10",
            "id": 7547,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDataPoint",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7524,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1300:8:25"
            },
            "parameters": {
              "id": 7523,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7520,
                  "mutability": "mutable",
                  "name": "setId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7547,
                  "src": "1215:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7519,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1215:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7522,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7547,
                  "src": "1238:17:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7521,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1238:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1205:56:25"
            },
            "returnParameters": {
              "id": 7529,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7526,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7547,
                  "src": "1326:6:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 7525,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1326:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7528,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7547,
                  "src": "1334:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7527,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1334:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1325:14:25"
            },
            "scope": 7688,
            "src": "1184:304:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              7731
            ],
            "body": {
              "id": 7561,
              "nodeType": "Block",
              "src": "1815:56:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7556,
                        "name": "sets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7712,
                        "src": "1832:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                          "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                        }
                      },
                      "id": 7558,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7557,
                        "name": "setId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7550,
                        "src": "1837:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1832:11:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$7708_storage",
                        "typeString": "struct DataRegistryStorage.Set storage ref"
                      }
                    },
                    "id": 7559,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "lastUpdatedTimestamp",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 7703,
                    "src": "1832:32:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7555,
                  "id": 7560,
                  "nodeType": "Return",
                  "src": "1825:39:25"
                }
              ]
            },
            "documentation": {
              "id": 7548,
              "nodeType": "StructuredDocumentation",
              "src": "1494:191:25",
              "text": " @notice Returns the timestamp on which the last data point for a data set\n was submitted.\n @param setId id of the data set\n @return last updated timestamp"
            },
            "functionSelector": "816a7e01",
            "id": 7562,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLastUpdatedTimestamp",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7552,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1776:8:25"
            },
            "parameters": {
              "id": 7551,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7550,
                  "mutability": "mutable",
                  "name": "setId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7562,
                  "src": "1723:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7549,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1723:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1722:15:25"
            },
            "returnParameters": {
              "id": 7555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7554,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7562,
                  "src": "1802:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1802:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1801:9:25"
            },
            "scope": 7688,
            "src": "1690:181:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              7738
            ],
            "body": {
              "id": 7576,
              "nodeType": "Block",
              "src": "2140:44:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7571,
                        "name": "sets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7712,
                        "src": "2157:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                          "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                        }
                      },
                      "id": 7573,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7572,
                        "name": "setId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7565,
                        "src": "2162:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2157:11:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$7708_storage",
                        "typeString": "struct DataRegistryStorage.Set storage ref"
                      }
                    },
                    "id": 7574,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "provider",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 7705,
                    "src": "2157:20:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 7570,
                  "id": 7575,
                  "nodeType": "Return",
                  "src": "2150:27:25"
                }
              ]
            },
            "documentation": {
              "id": 7563,
              "nodeType": "StructuredDocumentation",
              "src": "1877:141:25",
              "text": " @notice Returns the provider for a market object\n @param setId id of the data set\n @return address of provider"
            },
            "functionSelector": "ecef34f2",
            "id": 7577,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDataProvider",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7567,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2101:8:25"
            },
            "parameters": {
              "id": 7566,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7565,
                  "mutability": "mutable",
                  "name": "setId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7577,
                  "src": "2048:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7564,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2048:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2047:15:25"
            },
            "returnParameters": {
              "id": 7570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7569,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7577,
                  "src": "2127:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7568,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2127:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2126:9:25"
            },
            "scope": 7688,
            "src": "2023:161:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              7745
            ],
            "body": {
              "id": 7615,
              "nodeType": "Block",
              "src": "2554:191:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7588,
                          "name": "sets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7712,
                          "src": "2564:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                            "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                          }
                        },
                        "id": 7590,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7589,
                          "name": "setId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7580,
                          "src": "2569:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2564:11:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$7708_storage",
                          "typeString": "struct DataRegistryStorage.Set storage ref"
                        }
                      },
                      "id": 7591,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "provider",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7705,
                      "src": "2564:20:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 7592,
                      "name": "provider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7582,
                      "src": "2587:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2564:31:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 7594,
                  "nodeType": "ExpressionStatement",
                  "src": "2564:31:25"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 7600,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7595,
                          "name": "sets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7712,
                          "src": "2610:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                            "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                          }
                        },
                        "id": 7597,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7596,
                          "name": "setId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7580,
                          "src": "2615:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2610:11:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$7708_storage",
                          "typeString": "struct DataRegistryStorage.Set storage ref"
                        }
                      },
                      "id": 7598,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isSet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7707,
                      "src": "2610:17:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 7599,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2631:5:25",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "2610:26:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7609,
                  "nodeType": "IfStatement",
                  "src": "2606:81:25",
                  "trueBody": {
                    "id": 7608,
                    "nodeType": "Block",
                    "src": "2638:49:25",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 7601,
                                "name": "sets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7712,
                                "src": "2652:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                                  "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                                }
                              },
                              "id": 7603,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 7602,
                                "name": "setId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7580,
                                "src": "2657:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2652:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$7708_storage",
                                "typeString": "struct DataRegistryStorage.Set storage ref"
                              }
                            },
                            "id": 7604,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "isSet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7707,
                            "src": "2652:17:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 7605,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2672:4:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "2652:24:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7607,
                        "nodeType": "ExpressionStatement",
                        "src": "2652:24:25"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7611,
                        "name": "setId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7580,
                        "src": "2722:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7612,
                        "name": "provider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7582,
                        "src": "2729:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 7610,
                      "name": "UpdatedDataProvider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7494,
                      "src": "2702:19:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 7613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2702:36:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7614,
                  "nodeType": "EmitStatement",
                  "src": "2697:41:25"
                }
              ]
            },
            "documentation": {
              "id": 7578,
              "nodeType": "StructuredDocumentation",
              "src": "2190:223:25",
              "text": " @notice Registers / updates a market object provider.\n @dev Can only be called by the owner of the DataRegistry.\n @param setId id of the data set\n @param provider address of the provider"
            },
            "functionSelector": "af378978",
            "id": 7616,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 7586,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7585,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38434,
                  "src": "2540:9:25",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2540:9:25"
              }
            ],
            "name": "setDataProvider",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7584,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2523:8:25"
            },
            "parameters": {
              "id": 7583,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7580,
                  "mutability": "mutable",
                  "name": "setId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7616,
                  "src": "2452:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7579,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2452:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7582,
                  "mutability": "mutable",
                  "name": "provider",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7616,
                  "src": "2475:16:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7581,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2475:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2442:55:25"
            },
            "returnParameters": {
              "id": 7587,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2554:0:25"
            },
            "scope": 7688,
            "src": "2418:327:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              7754
            ],
            "body": {
              "id": 7686,
              "nodeType": "Block",
              "src": "3198:504:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7634,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7628,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "3229:3:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 7629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3229:10:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7630,
                              "name": "sets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7712,
                              "src": "3243:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                                "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                              }
                            },
                            "id": 7632,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7631,
                              "name": "setId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7619,
                              "src": "3248:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3243:11:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$7708_storage",
                              "typeString": "struct DataRegistryStorage.Set storage ref"
                            }
                          },
                          "id": 7633,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "provider",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7705,
                          "src": "3243:20:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3229:34:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4461746152656769737472792e7075626c69736844617461506f696e743a20554e415554484f52495a45445f53454e444552",
                        "id": 7635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3277:52:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_454ee3a12d42b5147dc866ae3fc65974d71672277d7bfeb941f8c08478335db8",
                          "typeString": "literal_string \"DataRegistry.publishDataPoint: UNAUTHORIZED_SENDER\""
                        },
                        "value": "DataRegistry.publishDataPoint: UNAUTHORIZED_SENDER"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_454ee3a12d42b5147dc866ae3fc65974d71672277d7bfeb941f8c08478335db8",
                          "typeString": "literal_string \"DataRegistry.publishDataPoint: UNAUTHORIZED_SENDER\""
                        }
                      ],
                      "id": 7627,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3208:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3208:131:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7637,
                  "nodeType": "ExpressionStatement",
                  "src": "3208:131:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7648,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7638,
                            "name": "sets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7712,
                            "src": "3350:4:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                              "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                            }
                          },
                          "id": 7640,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7639,
                            "name": "setId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7619,
                            "src": "3355:5:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3350:11:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$7708_storage",
                            "typeString": "struct DataRegistryStorage.Set storage ref"
                          }
                        },
                        "id": 7641,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "dataPoints",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7701,
                        "src": "3350:22:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DataPoint_$7697_storage_$",
                          "typeString": "mapping(uint256 => struct DataRegistryStorage.DataPoint storage ref)"
                        }
                      },
                      "id": 7643,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7642,
                        "name": "timestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7621,
                        "src": "3373:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3350:33:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DataPoint_$7697_storage",
                        "typeString": "struct DataRegistryStorage.DataPoint storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7645,
                          "name": "dataPoint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7623,
                          "src": "3396:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 7646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3407:4:25",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 7644,
                        "name": "DataPoint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7697,
                        "src": "3386:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_DataPoint_$7697_storage_ptr_$",
                          "typeString": "type(struct DataRegistryStorage.DataPoint storage pointer)"
                        }
                      },
                      "id": 7647,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3386:26:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DataPoint_$7697_memory_ptr",
                        "typeString": "struct DataRegistryStorage.DataPoint memory"
                      }
                    },
                    "src": "3350:62:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DataPoint_$7697_storage",
                      "typeString": "struct DataRegistryStorage.DataPoint storage ref"
                    }
                  },
                  "id": 7649,
                  "nodeType": "ExpressionStatement",
                  "src": "3350:62:25"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 7655,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7650,
                          "name": "sets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7712,
                          "src": "3427:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                            "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                          }
                        },
                        "id": 7652,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7651,
                          "name": "setId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7619,
                          "src": "3432:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3427:11:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$7708_storage",
                          "typeString": "struct DataRegistryStorage.Set storage ref"
                        }
                      },
                      "id": 7653,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isSet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7707,
                      "src": "3427:17:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 7654,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3448:5:25",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "3427:26:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7664,
                  "nodeType": "IfStatement",
                  "src": "3423:81:25",
                  "trueBody": {
                    "id": 7663,
                    "nodeType": "Block",
                    "src": "3455:49:25",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 7656,
                                "name": "sets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7712,
                                "src": "3469:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                                  "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                                }
                              },
                              "id": 7658,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 7657,
                                "name": "setId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7619,
                                "src": "3474:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3469:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$7708_storage",
                                "typeString": "struct DataRegistryStorage.Set storage ref"
                              }
                            },
                            "id": 7659,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "isSet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7707,
                            "src": "3469:17:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 7660,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3489:4:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "3469:24:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7662,
                        "nodeType": "ExpressionStatement",
                        "src": "3469:24:25"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7670,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7665,
                          "name": "sets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7712,
                          "src": "3518:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                            "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                          }
                        },
                        "id": 7667,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7666,
                          "name": "setId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7619,
                          "src": "3523:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3518:11:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$7708_storage",
                          "typeString": "struct DataRegistryStorage.Set storage ref"
                        }
                      },
                      "id": 7668,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "lastUpdatedTimestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7703,
                      "src": "3518:32:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 7669,
                      "name": "timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7621,
                      "src": "3553:9:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3518:44:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7679,
                  "nodeType": "IfStatement",
                  "src": "3514:119:25",
                  "trueBody": {
                    "id": 7678,
                    "nodeType": "Block",
                    "src": "3564:69:25",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 7671,
                                "name": "sets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7712,
                                "src": "3578:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Set_$7708_storage_$",
                                  "typeString": "mapping(bytes32 => struct DataRegistryStorage.Set storage ref)"
                                }
                              },
                              "id": 7673,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 7672,
                                "name": "setId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7619,
                                "src": "3583:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3578:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$7708_storage",
                                "typeString": "struct DataRegistryStorage.Set storage ref"
                              }
                            },
                            "id": 7674,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "lastUpdatedTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7703,
                            "src": "3578:32:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 7675,
                            "name": "timestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7621,
                            "src": "3613:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3578:44:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7677,
                        "nodeType": "ExpressionStatement",
                        "src": "3578:44:25"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7681,
                        "name": "setId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7619,
                        "src": "3667:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7682,
                        "name": "dataPoint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7623,
                        "src": "3674:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7683,
                        "name": "timestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7621,
                        "src": "3685:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7680,
                      "name": "PublishedDataPoint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7502,
                      "src": "3648:18:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_int256_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,int256,uint256)"
                      }
                    },
                    "id": 7684,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3648:47:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7685,
                  "nodeType": "EmitStatement",
                  "src": "3643:52:25"
                }
              ]
            },
            "documentation": {
              "id": 7617,
              "nodeType": "StructuredDocumentation",
              "src": "2751:296:25",
              "text": " @notice Stores a new data point of a data set for a given timestamp.\n @dev Can only be called by a whitelisted data provider.\n @param setId id of the data set\n @param timestamp timestamp of the data point\n @param dataPoint the data point of the data set"
            },
            "functionSelector": "d38db86d",
            "id": 7687,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "publishDataPoint",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7625,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3185:8:25"
            },
            "parameters": {
              "id": 7624,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7619,
                  "mutability": "mutable",
                  "name": "setId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7687,
                  "src": "3087:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7618,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3087:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7621,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7687,
                  "src": "3110:17:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7620,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3110:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7623,
                  "mutability": "mutable",
                  "name": "dataPoint",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7687,
                  "src": "3137:16:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 7622,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3137:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3077:82:25"
            },
            "returnParameters": {
              "id": 7626,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3198:0:25"
            },
            "scope": 7688,
            "src": "3052:650:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 7689,
        "src": "348:3356:25"
      }
    ],
    "src": "41:3664:25"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {
    "4": {
      "events": {
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        "0x183291f60aff981c3c2d6cb02edd75633d383a51f608e397789555ef0e775602": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "setId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "dataPoint",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            }
          ],
          "name": "PublishedDataPoint",
          "type": "event"
        },
        "0x6d3523ac54f3703c06e93ef7e0e67f963e698a668616fbc72dafb71eb6bd3096": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "setId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "provider",
              "type": "address"
            }
          ],
          "name": "UpdatedDataProvider",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xBcc85000a091F6422fb506511a345b2365b28776",
      "transactionHash": "0xc1c1f37e2ce647790f84b00ace0c558a9ddf62d46c6f7abda61c7d28c44fb1a4"
    },
    "5": {
      "events": {
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        "0x183291f60aff981c3c2d6cb02edd75633d383a51f608e397789555ef0e775602": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "setId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "dataPoint",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            }
          ],
          "name": "PublishedDataPoint",
          "type": "event"
        },
        "0x6d3523ac54f3703c06e93ef7e0e67f963e698a668616fbc72dafb71eb6bd3096": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "setId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "provider",
              "type": "address"
            }
          ],
          "name": "UpdatedDataProvider",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x8d126916E30dAcf865Bb0d2e6146785ca9282501",
      "transactionHash": "0xd47381e6553a817a0f1bff6541ff4ac63ca7f26803ee6098e88eab57d39315db"
    },
    "1994": {
      "events": {
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        "0x183291f60aff981c3c2d6cb02edd75633d383a51f608e397789555ef0e775602": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "setId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "dataPoint",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            }
          ],
          "name": "PublishedDataPoint",
          "type": "event"
        },
        "0x6d3523ac54f3703c06e93ef7e0e67f963e698a668616fbc72dafb71eb6bd3096": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "setId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "provider",
              "type": "address"
            }
          ],
          "name": "UpdatedDataProvider",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x456458C2Ae55a573E54B120Ff2BFe04655a20C78",
      "transactionHash": "0x0097ddeea20397316862a184852e0c71c2ce4f78178fa647da0a82684d989ef6"
    }
  },
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:17.754Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "getDataPoint(bytes32,uint256)": {
        "params": {
          "setId": "id of the data set",
          "timestamp": "timestamp of the data point"
        },
        "returns": {
          "_0": "data point, bool indicating whether data point exists"
        }
      },
      "getDataProvider(bytes32)": {
        "params": {
          "setId": "id of the data set"
        },
        "returns": {
          "_0": "address of provider"
        }
      },
      "getLastUpdatedTimestamp(bytes32)": {
        "params": {
          "setId": "id of the data set"
        },
        "returns": {
          "_0": "last updated timestamp"
        }
      },
      "isRegistered(bytes32)": {
        "params": {
          "setId": "setId of the data set"
        },
        "returns": {
          "_0": "true if market object exists"
        }
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "publishDataPoint(bytes32,uint256,int256)": {
        "details": "Can only be called by a whitelisted data provider.",
        "params": {
          "dataPoint": "the data point of the data set",
          "setId": "id of the data set",
          "timestamp": "timestamp of the data point"
        }
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "setDataProvider(bytes32,address)": {
        "details": "Can only be called by the owner of the DataRegistry.",
        "params": {
          "provider": "address of the provider",
          "setId": "id of the data set"
        }
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "title": "DataRegistry",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "getDataPoint(bytes32,uint256)": {
        "notice": "Returns a data point of a market object for a given timestamp."
      },
      "getDataProvider(bytes32)": {
        "notice": "Returns the provider for a market object"
      },
      "getLastUpdatedTimestamp(bytes32)": {
        "notice": "Returns the timestamp on which the last data point for a data set was submitted."
      },
      "isRegistered(bytes32)": {
        "notice": "@notice Returns true if there is data registered for a given setId"
      },
      "publishDataPoint(bytes32,uint256,int256)": {
        "notice": "Stores a new data point of a data set for a given timestamp."
      },
      "setDataProvider(bytes32,address)": {
        "notice": "Registers / updates a market object provider."
      }
    },
    "notice": "Registry for data which is published by an registered MarketObjectProvider",
    "version": 1
  }
}