{
  "contractName": "CentralizedOracleFactory",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "centralizedOracleMasterCopy",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_centralizedOracleMasterCopy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "creator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "centralizedOracle",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "ipfsHash",
          "type": "bytes"
        }
      ],
      "name": "CentralizedOracleCreation",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "ipfsHash",
          "type": "bytes"
        }
      ],
      "name": "createCentralizedOracle",
      "outputs": [
        {
          "name": "centralizedOracle",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.6+commit.b259423e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"ipfsHash\",\"type\":\"bytes\"}],\"name\":\"createCentralizedOracle\",\"outputs\":[{\"name\":\"centralizedOracle\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"centralizedOracleMasterCopy\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_centralizedOracleMasterCopy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"centralizedOracle\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"ipfsHash\",\"type\":\"bytes\"}],\"name\":\"CentralizedOracleCreation\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"Stefan George - <stefan@gnosis.pm>\",\"methods\":{\"createCentralizedOracle(bytes)\":{\"details\":\"Creates a new centralized oracle contract\",\"params\":{\"ipfsHash\":\"Hash identifying off chain event description\"},\"return\":\"Oracle contract\"}},\"title\":\"Centralized oracle factory contract - Allows to create centralized oracle contracts\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/CentralizedOracleFactory.sol\":\"CentralizedOracleFactory\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/CentralizedOracle.sol\":{\"keccak256\":\"0x60e5fbab4649a29eb315696966f60b20c85f4fe05f57b2f9ba82dea23b86f9fa\",\"urls\":[\"bzzr://398156d9ccb87bd9bb386084d19f0b868314361c091c1f9db664862a0408595f\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/CentralizedOracleFactory.sol\":{\"keccak256\":\"0x322a0017a0042d780431bb6254ca5da736fa9515eff64309362533fb19857065\",\"urls\":[\"bzzr://6260ccd3a359ec08b03c8a4b9d5ca1235de551358e15e376eda75aea318747ef\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/Oracle.sol\":{\"keccak256\":\"0xf4d12f4a59c17e66dfa6791188f621a8914e2038a4e3f72d6fc9fb903ca8e18e\",\"urls\":[\"bzzr://a477ccd203e677cc904b1a4f8fcc85251c5b5e09c5c10eed27e01318584b16d1\"]},\"@gnosis.pm/util-contracts/contracts/Proxy.sol\":{\"keccak256\":\"0xeab0e83a9ec9e7f052c0455a11577061ec6d1994db08dae429abd6faaabf6555\",\"urls\":[\"bzzr://b2c1273d4ec30e2f9e768eea8c510f8493a7359b03e01923d93eea86b57ec145\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50604051602080610a178339810180604052602081101561003057600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610986806100916000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634e2f220c1461003b578063af09ff5514610136575b600080fd5b6100f46004803603602081101561005157600080fd5b810190808035906020019064010000000081111561006e57600080fd5b82018360208201111561008057600080fd5b803590602001918460018302840111640100000000831117156100a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610180565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61013e610392565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633836040516101b2906103b7565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610253578082015181840152602081019050610238565b50505050905090810190601f1680156102805780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f0801580156102a3573d6000803e3d6000fd5b5090503373ffffffffffffffffffffffffffffffffffffffff167f33a1926cf5c2f7306ac1685bf19260d678fea874f5f59c00b69fa5e2643ecfd28284604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610352578082015181840152602081019050610337565b50505050905090810190601f16801561037f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610596806103c58339019056fe608060405234801561001057600080fd5b506040516105963803806105968339810180604052606081101561003357600080fd5b810190808051906020019092919080519060200190929190805164010000000081111561005f57600080fd5b8281019050602081018481111561007557600080fd5b815185600182028301116401000000008211171561009257600080fd5b505092919050505082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100d557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050602e81511461012457600080fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806002908051906020019061017b929190610184565b50505050610229565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106101c557805160ff19168380011785556101f3565b828001600101855582156101f3579182015b828111156101f25782518255916020019190600101906101d7565b5b5090506102009190610204565b5090565b61022691905b8082111561022257600081600090555060010161020a565b5090565b90565b61035e806102386000396000f3fe60806040526004361061004a5760003560e01c806327793f87146100985780638da5cb5b146100c3578063a619486e1461011a578063c623674f14610171578063c65fb38014610201575b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050366000803760008036600084600019f43d6000803e8060008114610093573d6000f35b3d6000fd5b3480156100a457600080fd5b506100ad610230565b6040518082815260200191505060405180910390f35b3480156100cf57600080fd5b506100d8610236565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561012657600080fd5b5061012f61025c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561017d57600080fd5b50610186610281565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c65780820151818401526020810190506101ab565b50505050905090810190601f1680156101f35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561020d57600080fd5b5061021661031f565b604051808215151515815260200191505060405180910390f35b60045481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156103175780601f106102ec57610100808354040283529160200191610317565b820191906000526020600020905b8154815290600101906020018083116102fa57829003601f168201915b505050505081565b600360009054906101000a900460ff168156fea165627a7a72305820e18b3e7113512ef868bedb45a1a99c6f6491f9422f1a3b2b108dc8535ff9cf350029a165627a7a723058203eb19c5f1ad9dfcd8b8ede6c093e7ac554ae893f87cdab6a6160d9b1eb1535040029",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80634e2f220c1461003b578063af09ff5514610136575b600080fd5b6100f46004803603602081101561005157600080fd5b810190808035906020019064010000000081111561006e57600080fd5b82018360208201111561008057600080fd5b803590602001918460018302840111640100000000831117156100a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610180565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61013e610392565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633836040516101b2906103b7565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610253578082015181840152602081019050610238565b50505050905090810190601f1680156102805780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f0801580156102a3573d6000803e3d6000fd5b5090503373ffffffffffffffffffffffffffffffffffffffff167f33a1926cf5c2f7306ac1685bf19260d678fea874f5f59c00b69fa5e2643ecfd28284604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610352578082015181840152602081019050610337565b50505050905090810190601f16801561037f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610596806103c58339019056fe608060405234801561001057600080fd5b506040516105963803806105968339810180604052606081101561003357600080fd5b810190808051906020019092919080519060200190929190805164010000000081111561005f57600080fd5b8281019050602081018481111561007557600080fd5b815185600182028301116401000000008211171561009257600080fd5b505092919050505082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100d557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050602e81511461012457600080fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806002908051906020019061017b929190610184565b50505050610229565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106101c557805160ff19168380011785556101f3565b828001600101855582156101f3579182015b828111156101f25782518255916020019190600101906101d7565b5b5090506102009190610204565b5090565b61022691905b8082111561022257600081600090555060010161020a565b5090565b90565b61035e806102386000396000f3fe60806040526004361061004a5760003560e01c806327793f87146100985780638da5cb5b146100c3578063a619486e1461011a578063c623674f14610171578063c65fb38014610201575b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050366000803760008036600084600019f43d6000803e8060008114610093573d6000f35b3d6000fd5b3480156100a457600080fd5b506100ad610230565b6040518082815260200191505060405180910390f35b3480156100cf57600080fd5b506100d8610236565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561012657600080fd5b5061012f61025c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561017d57600080fd5b50610186610281565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c65780820151818401526020810190506101ab565b50505050905090810190601f1680156101f35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561020d57600080fd5b5061021661031f565b604051808215151515815260200191505060405180910390f35b60045481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156103175780601f106102ec57610100808354040283529160200191610317565b820191906000526020600020905b8154815290600101906020018083116102fa57829003601f168201915b505050505081565b600360009054906101000a900460ff168156fea165627a7a72305820e18b3e7113512ef868bedb45a1a99c6f6491f9422f1a3b2b108dc8535ff9cf350029a165627a7a723058203eb19c5f1ad9dfcd8b8ede6c093e7ac554ae893f87cdab6a6160d9b1eb1535040029",
  "sourceMap": "211:996:15:-;;;528:154;8:9:-1;5:2;;;30:1;27;20:12;5:2;528:154:15;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;528:154:15;;;;;;;;;;;;;;;;647:28;617:27;;:58;;;;;;;;;;;;;;;;;;528:154;211:996;;;;;;",
  "deployedSourceMap": "211:996:15:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;211:996:15;;;;;;;;;;;;;;;;;;;;;;;;844:361;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;844:361:15;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;844:361:15;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;844:361:15;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;844:361:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;844:361:15;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;429:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;844:361;932:35;1064:27;;;;;;;;;;;1094:10;1106:8;1029:86;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1029:86:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1029:86:15;983:134;;1158:10;1132:66;;;1170:17;1189:8;1132:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1132:66:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;844:361;;;:::o;429:52::-;;;;;;;;;;;;;:::o;211:996::-;;;;;;;;:::o",
  "source": "pragma solidity ^0.5.0;\nimport \"../Oracles/CentralizedOracle.sol\";\n\n\n/// @title Centralized oracle factory contract - Allows to create centralized oracle contracts\n/// @author Stefan George - <stefan@gnosis.pm>\ncontract CentralizedOracleFactory {\n\n    /*\n     *  Events\n     */\n    event CentralizedOracleCreation(address indexed creator, CentralizedOracle centralizedOracle, bytes ipfsHash);\n\n    /*\n     *  Storage\n     */\n    CentralizedOracle public centralizedOracleMasterCopy;\n\n    /*\n     *  Public functions\n     */\n    constructor(CentralizedOracle _centralizedOracleMasterCopy)\n        public\n    {\n        centralizedOracleMasterCopy = _centralizedOracleMasterCopy;\n    }\n\n    /// @dev Creates a new centralized oracle contract\n    /// @param ipfsHash Hash identifying off chain event description\n    /// @return Oracle contract\n    function createCentralizedOracle(bytes memory ipfsHash)\n        public\n        returns (CentralizedOracle centralizedOracle)\n    {\n        centralizedOracle = CentralizedOracle(address(new CentralizedOracleProxy(address(centralizedOracleMasterCopy), msg.sender, ipfsHash)));\n        emit CentralizedOracleCreation(msg.sender, centralizedOracle, ipfsHash);\n    }\n}\n",
  "sourcePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/CentralizedOracleFactory.sol",
  "ast": {
    "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/CentralizedOracleFactory.sol",
    "exportedSymbols": {
      "CentralizedOracleFactory": [
        3870
      ]
    },
    "id": 3871,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3817,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:15"
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/CentralizedOracle.sol",
        "file": "../Oracles/CentralizedOracle.sol",
        "id": 3818,
        "nodeType": "ImportDirective",
        "scope": 3871,
        "sourceUnit": 3816,
        "src": "24:42:15",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          3746
        ],
        "contractKind": "contract",
        "documentation": "@title Centralized oracle factory contract - Allows to create centralized oracle contracts\n @author Stefan George - <stefan@gnosis.pm>",
        "fullyImplemented": true,
        "id": 3870,
        "linearizedBaseContracts": [
          3870
        ],
        "name": "CentralizedOracleFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 3826,
            "name": "CentralizedOracleCreation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3825,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3820,
                  "indexed": true,
                  "name": "creator",
                  "nodeType": "VariableDeclaration",
                  "scope": 3826,
                  "src": "314:23:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3819,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "314:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3822,
                  "indexed": false,
                  "name": "centralizedOracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 3826,
                  "src": "339:35:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                    "typeString": "contract CentralizedOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3821,
                    "name": "CentralizedOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3815,
                    "src": "339:17:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                      "typeString": "contract CentralizedOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3824,
                  "indexed": false,
                  "name": "ipfsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 3826,
                  "src": "376:14:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3823,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "376:5:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "313:78:15"
            },
            "src": "282:110:15"
          },
          {
            "constant": false,
            "id": 3828,
            "name": "centralizedOracleMasterCopy",
            "nodeType": "VariableDeclaration",
            "scope": 3870,
            "src": "429:52:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
              "typeString": "contract CentralizedOracle"
            },
            "typeName": {
              "contractScope": null,
              "id": 3827,
              "name": "CentralizedOracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3815,
              "src": "429:17:15",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                "typeString": "contract CentralizedOracle"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3837,
              "nodeType": "Block",
              "src": "607:75:15",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3835,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3833,
                      "name": "centralizedOracleMasterCopy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3828,
                      "src": "617:27:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                        "typeString": "contract CentralizedOracle"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3834,
                      "name": "_centralizedOracleMasterCopy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3830,
                      "src": "647:28:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                        "typeString": "contract CentralizedOracle"
                      }
                    },
                    "src": "617:58:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                      "typeString": "contract CentralizedOracle"
                    }
                  },
                  "id": 3836,
                  "nodeType": "ExpressionStatement",
                  "src": "617:58:15"
                }
              ]
            },
            "documentation": null,
            "id": 3838,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3831,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3830,
                  "name": "_centralizedOracleMasterCopy",
                  "nodeType": "VariableDeclaration",
                  "scope": 3838,
                  "src": "540:46:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                    "typeString": "contract CentralizedOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3829,
                    "name": "CentralizedOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3815,
                    "src": "540:17:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                      "typeString": "contract CentralizedOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "539:48:15"
            },
            "returnParameters": {
              "id": 3832,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "607:0:15"
            },
            "scope": 3870,
            "src": "528:154:15",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3868,
              "nodeType": "Block",
              "src": "973:232:15",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3859,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3845,
                      "name": "centralizedOracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3843,
                      "src": "983:17:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                        "typeString": "contract CentralizedOracle"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3851,
                                      "name": "centralizedOracleMasterCopy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3828,
                                      "src": "1064:27:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                                        "typeString": "contract CentralizedOracle"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                                        "typeString": "contract CentralizedOracle"
                                      }
                                    ],
                                    "id": 3850,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1056:7:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 3852,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1056:36:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3853,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7920,
                                    "src": "1094:3:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 3854,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1094:10:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3855,
                                  "name": "ipfsHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3840,
                                  "src": "1106:8:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 3849,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "1029:26:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_CentralizedOracleProxy_$3746_$",
                                  "typeString": "function (address,address,bytes memory) returns (contract CentralizedOracleProxy)"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 3848,
                                  "name": "CentralizedOracleProxy",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 3746,
                                  "src": "1033:22:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_CentralizedOracleProxy_$3746",
                                    "typeString": "contract CentralizedOracleProxy"
                                  }
                                }
                              },
                              "id": 3856,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1029:86:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_CentralizedOracleProxy_$3746",
                                "typeString": "contract CentralizedOracleProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_CentralizedOracleProxy_$3746",
                                "typeString": "contract CentralizedOracleProxy"
                              }
                            ],
                            "id": 3847,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1021:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 3857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1021:95:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        ],
                        "id": 3846,
                        "name": "CentralizedOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3815,
                        "src": "1003:17:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_CentralizedOracle_$3815_$",
                          "typeString": "type(contract CentralizedOracle)"
                        }
                      },
                      "id": 3858,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1003:114:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                        "typeString": "contract CentralizedOracle"
                      }
                    },
                    "src": "983:134:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                      "typeString": "contract CentralizedOracle"
                    }
                  },
                  "id": 3860,
                  "nodeType": "ExpressionStatement",
                  "src": "983:134:15"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3862,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7920,
                          "src": "1158:3:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3863,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1158:10:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3864,
                        "name": "centralizedOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3843,
                        "src": "1170:17:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                          "typeString": "contract CentralizedOracle"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3865,
                        "name": "ipfsHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3840,
                        "src": "1189:8:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                          "typeString": "contract CentralizedOracle"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 3861,
                      "name": "CentralizedOracleCreation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3826,
                      "src": "1132:25:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_CentralizedOracle_$3815_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,contract CentralizedOracle,bytes memory)"
                      }
                    },
                    "id": 3866,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1132:66:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3867,
                  "nodeType": "EmitStatement",
                  "src": "1127:71:15"
                }
              ]
            },
            "documentation": "@dev Creates a new centralized oracle contract\n @param ipfsHash Hash identifying off chain event description\n @return Oracle contract",
            "id": 3869,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createCentralizedOracle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3841,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3840,
                  "name": "ipfsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 3869,
                  "src": "877:21:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3839,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "877:5:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "876:23:15"
            },
            "returnParameters": {
              "id": 3844,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3843,
                  "name": "centralizedOracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 3869,
                  "src": "932:35:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                    "typeString": "contract CentralizedOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3842,
                    "name": "CentralizedOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3815,
                    "src": "932:17:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                      "typeString": "contract CentralizedOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "931:37:15"
            },
            "scope": 3870,
            "src": "844:361:15",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 3871,
        "src": "211:996:15"
      }
    ],
    "src": "0:1208:15"
  },
  "legacyAST": {
    "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/CentralizedOracleFactory.sol",
    "exportedSymbols": {
      "CentralizedOracleFactory": [
        3870
      ]
    },
    "id": 3871,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3817,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:15"
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/CentralizedOracle.sol",
        "file": "../Oracles/CentralizedOracle.sol",
        "id": 3818,
        "nodeType": "ImportDirective",
        "scope": 3871,
        "sourceUnit": 3816,
        "src": "24:42:15",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          3746
        ],
        "contractKind": "contract",
        "documentation": "@title Centralized oracle factory contract - Allows to create centralized oracle contracts\n @author Stefan George - <stefan@gnosis.pm>",
        "fullyImplemented": true,
        "id": 3870,
        "linearizedBaseContracts": [
          3870
        ],
        "name": "CentralizedOracleFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 3826,
            "name": "CentralizedOracleCreation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3825,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3820,
                  "indexed": true,
                  "name": "creator",
                  "nodeType": "VariableDeclaration",
                  "scope": 3826,
                  "src": "314:23:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3819,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "314:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3822,
                  "indexed": false,
                  "name": "centralizedOracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 3826,
                  "src": "339:35:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                    "typeString": "contract CentralizedOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3821,
                    "name": "CentralizedOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3815,
                    "src": "339:17:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                      "typeString": "contract CentralizedOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3824,
                  "indexed": false,
                  "name": "ipfsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 3826,
                  "src": "376:14:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3823,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "376:5:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "313:78:15"
            },
            "src": "282:110:15"
          },
          {
            "constant": false,
            "id": 3828,
            "name": "centralizedOracleMasterCopy",
            "nodeType": "VariableDeclaration",
            "scope": 3870,
            "src": "429:52:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
              "typeString": "contract CentralizedOracle"
            },
            "typeName": {
              "contractScope": null,
              "id": 3827,
              "name": "CentralizedOracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3815,
              "src": "429:17:15",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                "typeString": "contract CentralizedOracle"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3837,
              "nodeType": "Block",
              "src": "607:75:15",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3835,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3833,
                      "name": "centralizedOracleMasterCopy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3828,
                      "src": "617:27:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                        "typeString": "contract CentralizedOracle"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3834,
                      "name": "_centralizedOracleMasterCopy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3830,
                      "src": "647:28:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                        "typeString": "contract CentralizedOracle"
                      }
                    },
                    "src": "617:58:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                      "typeString": "contract CentralizedOracle"
                    }
                  },
                  "id": 3836,
                  "nodeType": "ExpressionStatement",
                  "src": "617:58:15"
                }
              ]
            },
            "documentation": null,
            "id": 3838,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3831,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3830,
                  "name": "_centralizedOracleMasterCopy",
                  "nodeType": "VariableDeclaration",
                  "scope": 3838,
                  "src": "540:46:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                    "typeString": "contract CentralizedOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3829,
                    "name": "CentralizedOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3815,
                    "src": "540:17:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                      "typeString": "contract CentralizedOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "539:48:15"
            },
            "returnParameters": {
              "id": 3832,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "607:0:15"
            },
            "scope": 3870,
            "src": "528:154:15",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3868,
              "nodeType": "Block",
              "src": "973:232:15",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3859,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3845,
                      "name": "centralizedOracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3843,
                      "src": "983:17:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                        "typeString": "contract CentralizedOracle"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3851,
                                      "name": "centralizedOracleMasterCopy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3828,
                                      "src": "1064:27:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                                        "typeString": "contract CentralizedOracle"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                                        "typeString": "contract CentralizedOracle"
                                      }
                                    ],
                                    "id": 3850,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1056:7:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 3852,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1056:36:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3853,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7920,
                                    "src": "1094:3:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 3854,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1094:10:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3855,
                                  "name": "ipfsHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3840,
                                  "src": "1106:8:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 3849,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "1029:26:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_CentralizedOracleProxy_$3746_$",
                                  "typeString": "function (address,address,bytes memory) returns (contract CentralizedOracleProxy)"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 3848,
                                  "name": "CentralizedOracleProxy",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 3746,
                                  "src": "1033:22:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_CentralizedOracleProxy_$3746",
                                    "typeString": "contract CentralizedOracleProxy"
                                  }
                                }
                              },
                              "id": 3856,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1029:86:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_CentralizedOracleProxy_$3746",
                                "typeString": "contract CentralizedOracleProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_CentralizedOracleProxy_$3746",
                                "typeString": "contract CentralizedOracleProxy"
                              }
                            ],
                            "id": 3847,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1021:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 3857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1021:95:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        ],
                        "id": 3846,
                        "name": "CentralizedOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3815,
                        "src": "1003:17:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_CentralizedOracle_$3815_$",
                          "typeString": "type(contract CentralizedOracle)"
                        }
                      },
                      "id": 3858,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1003:114:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                        "typeString": "contract CentralizedOracle"
                      }
                    },
                    "src": "983:134:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                      "typeString": "contract CentralizedOracle"
                    }
                  },
                  "id": 3860,
                  "nodeType": "ExpressionStatement",
                  "src": "983:134:15"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3862,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7920,
                          "src": "1158:3:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3863,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1158:10:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3864,
                        "name": "centralizedOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3843,
                        "src": "1170:17:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                          "typeString": "contract CentralizedOracle"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3865,
                        "name": "ipfsHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3840,
                        "src": "1189:8:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                          "typeString": "contract CentralizedOracle"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 3861,
                      "name": "CentralizedOracleCreation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3826,
                      "src": "1132:25:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_CentralizedOracle_$3815_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,contract CentralizedOracle,bytes memory)"
                      }
                    },
                    "id": 3866,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1132:66:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3867,
                  "nodeType": "EmitStatement",
                  "src": "1127:71:15"
                }
              ]
            },
            "documentation": "@dev Creates a new centralized oracle contract\n @param ipfsHash Hash identifying off chain event description\n @return Oracle contract",
            "id": 3869,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createCentralizedOracle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3841,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3840,
                  "name": "ipfsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 3869,
                  "src": "877:21:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3839,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "877:5:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "876:23:15"
            },
            "returnParameters": {
              "id": 3844,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3843,
                  "name": "centralizedOracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 3869,
                  "src": "932:35:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                    "typeString": "contract CentralizedOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3842,
                    "name": "CentralizedOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3815,
                    "src": "932:17:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_CentralizedOracle_$3815",
                      "typeString": "contract CentralizedOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "931:37:15"
            },
            "scope": 3870,
            "src": "844:361:15",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 3871,
        "src": "211:996:15"
      }
    ],
    "src": "0:1208:15"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.6+commit.b259423e.Emscripten.clang"
  },
  "networks": {
    "1": {
      "events": {},
      "links": {},
      "address": "0xfb60b8ffdb16420b8afc3b77a9a3186bc905ef1f",
      "transactionHash": "0x8ce4d0a8b29dcc78a4f59521c35c56020600d972926e4817aeb0fb7dddacad90"
    },
    "3": {
      "events": {},
      "links": {},
      "address": "0x35d79cf9134fc5c5fc66986dc628cf3f39d527ba",
      "transactionHash": "0x04451c88b6186dec25eeef688a393639f56e3f243ba5d71a3a1c65e7cf11036b"
    },
    "4": {
      "events": {},
      "links": {},
      "address": "0x7905fb9ce7dec392deabeae0067ea7cbaaca06b9",
      "transactionHash": "0xad9a300e9167e882c1a3b7c5ff111ab1abd96d803d858eabbf04c4b17ffa9b15"
    },
    "42": {
      "events": {},
      "links": {},
      "address": "0x52e253300ba065a44effb68e989e3c0ccbb5a035",
      "transactionHash": "0xa04f724059e760afa2c024c01ead5ebf127e164c84aecb63bb27693590280ee9"
    },
    "437894314312": {
      "events": {},
      "links": {},
      "address": "0x630589690929e9cdefdef0734717a9ef3ec7fcfe",
      "transactionHash": "0xebb4f7636ef2b505180889831169326f23ec81ebefd3fb1a53740db3bd7fe8d1"
    }
  },
  "schemaVersion": "3.0.11",
  "updatedAt": "2019-09-20T17:46:52.191Z",
  "devdoc": {
    "author": "Stefan George - <stefan@gnosis.pm>",
    "methods": {
      "createCentralizedOracle(bytes)": {
        "details": "Creates a new centralized oracle contract",
        "params": {
          "ipfsHash": "Hash identifying off chain event description"
        },
        "return": "Oracle contract"
      }
    },
    "title": "Centralized oracle factory contract - Allows to create centralized oracle contracts"
  },
  "userdoc": {
    "methods": {}
  }
}