{
  "contractName": "Event",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "outcome",
      "outputs": [
        {
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "oracle",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "outcomeTokens",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "collateralToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOutcomeSet",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_collateralToken",
          "type": "address"
        },
        {
          "name": "_oracle",
          "type": "address"
        },
        {
          "name": "outcomeCount",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "outcomeToken",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "index",
          "type": "uint8"
        }
      ],
      "name": "OutcomeTokenCreation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "buyer",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "collateralTokenCount",
          "type": "uint256"
        }
      ],
      "name": "OutcomeTokenSetIssuance",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "seller",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "outcomeTokenCount",
          "type": "uint256"
        }
      ],
      "name": "OutcomeTokenSetRevocation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "outcome",
          "type": "int256"
        }
      ],
      "name": "OutcomeAssignment",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "winnings",
          "type": "uint256"
        }
      ],
      "name": "WinningsRedemption",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "collateralTokenCount",
          "type": "uint256"
        }
      ],
      "name": "buyAllOutcomes",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "outcomeTokenCount",
          "type": "uint256"
        }
      ],
      "name": "sellAllOutcomes",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "setOutcome",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getOutcomeCount",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getOutcomeTokens",
      "outputs": [
        {
          "name": "",
          "type": "address[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "getOutcomeTokenDistribution",
      "outputs": [
        {
          "name": "outcomeTokenDistribution",
          "type": "uint256[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEventHash",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "redeemWinnings",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity ^0.4.15;\nimport \"../Tokens/Token.sol\";\nimport \"../Tokens/OutcomeToken.sol\";\nimport \"../Oracles/Oracle.sol\";\n\n\n/// @title Event contract - Provide basic functionality required by different event types\n/// @author Stefan George - <stefan@gnosis.pm>\ncontract Event {\n\n    /*\n     *  Events\n     */\n    event OutcomeTokenCreation(OutcomeToken outcomeToken, uint8 index);\n    event OutcomeTokenSetIssuance(address indexed buyer, uint collateralTokenCount);\n    event OutcomeTokenSetRevocation(address indexed seller, uint outcomeTokenCount);\n    event OutcomeAssignment(int outcome);\n    event WinningsRedemption(address indexed receiver, uint winnings);\n\n    /*\n     *  Storage\n     */\n    Token public collateralToken;\n    Oracle public oracle;\n    bool public isOutcomeSet;\n    int public outcome;\n    OutcomeToken[] public outcomeTokens;\n\n    /*\n     *  Public functions\n     */\n    /// @dev Contract constructor validates and sets basic event properties\n    /// @param _collateralToken Tokens used as collateral in exchange for outcome tokens\n    /// @param _oracle Oracle contract used to resolve the event\n    /// @param outcomeCount Number of event outcomes\n    function Event(Token _collateralToken, Oracle _oracle, uint8 outcomeCount)\n        public\n    {\n        // Validate input\n        require(address(_collateralToken) != 0 && address(_oracle) != 0 && outcomeCount >= 2);\n        collateralToken = _collateralToken;\n        oracle = _oracle;\n        // Create an outcome token for each outcome\n        for (uint8 i = 0; i < outcomeCount; i++) {\n            OutcomeToken outcomeToken = new OutcomeToken();\n            outcomeTokens.push(outcomeToken);\n            OutcomeTokenCreation(outcomeToken, i);\n        }\n    }\n\n    /// @dev Buys equal number of tokens of all outcomes, exchanging collateral tokens and sets of outcome tokens 1:1\n    /// @param collateralTokenCount Number of collateral tokens\n    function buyAllOutcomes(uint collateralTokenCount)\n        public\n    {\n        // Transfer collateral tokens to events contract\n        require(collateralToken.transferFrom(msg.sender, this, collateralTokenCount));\n        // Issue new outcome tokens to sender\n        for (uint8 i = 0; i < outcomeTokens.length; i++)\n            outcomeTokens[i].issue(msg.sender, collateralTokenCount);\n        OutcomeTokenSetIssuance(msg.sender, collateralTokenCount);\n    }\n\n    /// @dev Sells equal number of tokens of all outcomes, exchanging collateral tokens and sets of outcome tokens 1:1\n    /// @param outcomeTokenCount Number of outcome tokens\n    function sellAllOutcomes(uint outcomeTokenCount)\n        public\n    {\n        // Revoke sender's outcome tokens of all outcomes\n        for (uint8 i = 0; i < outcomeTokens.length; i++)\n            outcomeTokens[i].revoke(msg.sender, outcomeTokenCount);\n        // Transfer collateral tokens to sender\n        require(collateralToken.transfer(msg.sender, outcomeTokenCount));\n        OutcomeTokenSetRevocation(msg.sender, outcomeTokenCount);\n    }\n\n    /// @dev Sets winning event outcome\n    function setOutcome()\n        public\n    {\n        // Winning outcome is not set yet in event contract but in oracle contract\n        require(!isOutcomeSet && oracle.isOutcomeSet());\n        // Set winning outcome\n        outcome = oracle.getOutcome();\n        isOutcomeSet = true;\n        OutcomeAssignment(outcome);\n    }\n\n    /// @dev Returns outcome count\n    /// @return Outcome count\n    function getOutcomeCount()\n        public\n        constant\n        returns (uint8)\n    {\n        return uint8(outcomeTokens.length);\n    }\n\n    /// @dev Returns outcome tokens array\n    /// @return Outcome tokens\n    function getOutcomeTokens()\n        public\n        constant\n        returns (OutcomeToken[])\n    {\n        return outcomeTokens;\n    }\n\n    /// @dev Returns the amount of outcome tokens held by owner\n    /// @return Outcome token distribution\n    function getOutcomeTokenDistribution(address owner)\n        public\n        constant\n        returns (uint[] outcomeTokenDistribution)\n    {\n        outcomeTokenDistribution = new uint[](outcomeTokens.length);\n        for (uint8 i = 0; i < outcomeTokenDistribution.length; i++)\n            outcomeTokenDistribution[i] = outcomeTokens[i].balanceOf(owner);\n    }\n\n    /// @dev Calculates and returns event hash\n    /// @return Event hash\n    function getEventHash() public constant returns (bytes32);\n\n    /// @dev Exchanges sender's winning outcome tokens for collateral tokens\n    /// @return Sender's winnings\n    function redeemWinnings() public returns (uint);\n}\n",
  "sourcePath": "@gnosis.pm/pm-contracts/contracts/Events/Event.sol",
  "ast": {
    "absolutePath": "@gnosis.pm/pm-contracts/contracts/Events/Event.sol",
    "exportedSymbols": {
      "Event": [
        1680
      ]
    },
    "id": 1681,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1389,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".15"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:6"
      },
      {
        "absolutePath": "@gnosis.pm/pm-contracts/contracts/Tokens/Token.sol",
        "file": "../Tokens/Token.sol",
        "id": 1390,
        "nodeType": "ImportDirective",
        "scope": 1681,
        "sourceUnit": 3361,
        "src": "25:29:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@gnosis.pm/pm-contracts/contracts/Tokens/OutcomeToken.sol",
        "file": "../Tokens/OutcomeToken.sol",
        "id": 1391,
        "nodeType": "ImportDirective",
        "scope": 1681,
        "sourceUnit": 3086,
        "src": "55:36:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@gnosis.pm/pm-contracts/contracts/Oracles/Oracle.sol",
        "file": "../Oracles/Oracle.sol",
        "id": 1392,
        "nodeType": "ImportDirective",
        "scope": 1681,
        "sourceUnit": 2978,
        "src": "92:31:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          3085
        ],
        "contractKind": "contract",
        "documentation": "@title Event contract - Provide basic functionality required by different event types\n @author Stefan George - <stefan@gnosis.pm>",
        "fullyImplemented": false,
        "id": 1680,
        "linearizedBaseContracts": [
          1680
        ],
        "name": "Event",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 1398,
            "name": "OutcomeTokenCreation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1397,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1394,
                  "indexed": false,
                  "name": "outcomeToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 1398,
                  "src": "342:25:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                    "typeString": "contract OutcomeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1393,
                    "name": "OutcomeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3085,
                    "src": "342:12:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                      "typeString": "contract OutcomeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1396,
                  "indexed": false,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 1398,
                  "src": "369:11:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1395,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "369:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "341:40:6"
            },
            "src": "315:67:6"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1404,
            "name": "OutcomeTokenSetIssuance",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1403,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1400,
                  "indexed": true,
                  "name": "buyer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1404,
                  "src": "417:21:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1399,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "417:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1402,
                  "indexed": false,
                  "name": "collateralTokenCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1404,
                  "src": "440:25:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1401,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "440:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "416:50:6"
            },
            "src": "387:80:6"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1410,
            "name": "OutcomeTokenSetRevocation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1409,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1406,
                  "indexed": true,
                  "name": "seller",
                  "nodeType": "VariableDeclaration",
                  "scope": 1410,
                  "src": "504:22:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1405,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "504:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1408,
                  "indexed": false,
                  "name": "outcomeTokenCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1410,
                  "src": "528:22:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1407,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "528:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "503:48:6"
            },
            "src": "472:80:6"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1414,
            "name": "OutcomeAssignment",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1413,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1412,
                  "indexed": false,
                  "name": "outcome",
                  "nodeType": "VariableDeclaration",
                  "scope": 1414,
                  "src": "581:11:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 1411,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "581:3:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "580:13:6"
            },
            "src": "557:37:6"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1420,
            "name": "WinningsRedemption",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1419,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1416,
                  "indexed": true,
                  "name": "receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 1420,
                  "src": "624:24:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1415,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "624:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1418,
                  "indexed": false,
                  "name": "winnings",
                  "nodeType": "VariableDeclaration",
                  "scope": 1420,
                  "src": "650:13:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1417,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "650:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "623:41:6"
            },
            "src": "599:66:6"
          },
          {
            "constant": false,
            "id": 1422,
            "name": "collateralToken",
            "nodeType": "VariableDeclaration",
            "scope": 1680,
            "src": "702:28:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Token_$3360",
              "typeString": "contract Token"
            },
            "typeName": {
              "contractScope": null,
              "id": 1421,
              "name": "Token",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3360,
              "src": "702:5:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Token_$3360",
                "typeString": "contract Token"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1424,
            "name": "oracle",
            "nodeType": "VariableDeclaration",
            "scope": 1680,
            "src": "736:20:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Oracle_$2977",
              "typeString": "contract Oracle"
            },
            "typeName": {
              "contractScope": null,
              "id": 1423,
              "name": "Oracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2977,
              "src": "736:6:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Oracle_$2977",
                "typeString": "contract Oracle"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1426,
            "name": "isOutcomeSet",
            "nodeType": "VariableDeclaration",
            "scope": 1680,
            "src": "762:24:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 1425,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "762:4:6",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1428,
            "name": "outcome",
            "nodeType": "VariableDeclaration",
            "scope": 1680,
            "src": "792:18:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_int256",
              "typeString": "int256"
            },
            "typeName": {
              "id": 1427,
              "name": "int",
              "nodeType": "ElementaryTypeName",
              "src": "792:3:6",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1431,
            "name": "outcomeTokens",
            "nodeType": "VariableDeclaration",
            "scope": 1680,
            "src": "816:35:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
              "typeString": "contract OutcomeToken[]"
            },
            "typeName": {
              "baseType": {
                "contractScope": null,
                "id": 1429,
                "name": "OutcomeToken",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 3085,
                "src": "816:12:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                  "typeString": "contract OutcomeToken"
                }
              },
              "id": 1430,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "816:14:6",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage_ptr",
                "typeString": "contract OutcomeToken[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1495,
              "nodeType": "Block",
              "src": "1275:468:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 1445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1442,
                                  "name": "_collateralToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1433,
                                  "src": "1327:16:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Token_$3360",
                                    "typeString": "contract Token"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Token_$3360",
                                    "typeString": "contract Token"
                                  }
                                ],
                                "id": 1441,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1319:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 1443,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1319:25:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1348:1:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1319:30:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 1450,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1447,
                                  "name": "_oracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1435,
                                  "src": "1361:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Oracle_$2977",
                                    "typeString": "contract Oracle"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Oracle_$2977",
                                    "typeString": "contract Oracle"
                                  }
                                ],
                                "id": 1446,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1353:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 1448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1353:16:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1373:1:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1353:21:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1319:55:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 1454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1452,
                            "name": "outcomeCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1437,
                            "src": "1378:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1394:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "1378:17:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1319:76:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1440,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9183,
                        9184
                      ],
                      "referencedDeclaration": 9183,
                      "src": "1311:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1456,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1311:85:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1457,
                  "nodeType": "ExpressionStatement",
                  "src": "1311:85:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1458,
                      "name": "collateralToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1422,
                      "src": "1406:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Token_$3360",
                        "typeString": "contract Token"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1459,
                      "name": "_collateralToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1433,
                      "src": "1424:16:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Token_$3360",
                        "typeString": "contract Token"
                      }
                    },
                    "src": "1406:34:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Token_$3360",
                      "typeString": "contract Token"
                    }
                  },
                  "id": 1461,
                  "nodeType": "ExpressionStatement",
                  "src": "1406:34:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1462,
                      "name": "oracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1424,
                      "src": "1450:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Oracle_$2977",
                        "typeString": "contract Oracle"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1463,
                      "name": "_oracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1435,
                      "src": "1459:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Oracle_$2977",
                        "typeString": "contract Oracle"
                      }
                    },
                    "src": "1450:16:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Oracle_$2977",
                      "typeString": "contract Oracle"
                    }
                  },
                  "id": 1465,
                  "nodeType": "ExpressionStatement",
                  "src": "1450:16:6"
                },
                {
                  "body": {
                    "id": 1493,
                    "nodeType": "Block",
                    "src": "1569:168:6",
                    "statements": [
                      {
                        "assignments": [
                          1477
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1477,
                            "name": "outcomeToken",
                            "nodeType": "VariableDeclaration",
                            "scope": 1496,
                            "src": "1583:25:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                              "typeString": "contract OutcomeToken"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1476,
                              "name": "OutcomeToken",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3085,
                              "src": "1583:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                                "typeString": "contract OutcomeToken"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1481,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1479,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1611:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_OutcomeToken_$3085_$",
                              "typeString": "function () returns (contract OutcomeToken)"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1478,
                              "name": "OutcomeToken",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3085,
                              "src": "1615:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                                "typeString": "contract OutcomeToken"
                              }
                            }
                          },
                          "id": 1480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1611:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                            "typeString": "contract OutcomeToken"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1583:46:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1485,
                              "name": "outcomeToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1477,
                              "src": "1662:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                                "typeString": "contract OutcomeToken"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                                "typeString": "contract OutcomeToken"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1482,
                              "name": "outcomeTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1431,
                              "src": "1643:13:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                                "typeString": "contract OutcomeToken[] storage ref"
                              }
                            },
                            "id": 1484,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1643:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_OutcomeToken_$3085_$returns$_t_uint256_$",
                              "typeString": "function (contract OutcomeToken) returns (uint256)"
                            }
                          },
                          "id": 1486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1643:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1487,
                        "nodeType": "ExpressionStatement",
                        "src": "1643:32:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1489,
                              "name": "outcomeToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1477,
                              "src": "1710:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                                "typeString": "contract OutcomeToken"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1490,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1467,
                              "src": "1724:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                                "typeString": "contract OutcomeToken"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 1488,
                            "name": "OutcomeTokenCreation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1398,
                            "src": "1689:20:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_contract$_OutcomeToken_$3085_$_t_uint8_$returns$__$",
                              "typeString": "function (contract OutcomeToken,uint8)"
                            }
                          },
                          "id": 1491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1689:37:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1492,
                        "nodeType": "ExpressionStatement",
                        "src": "1689:37:6"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 1472,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1470,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1467,
                      "src": "1546:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1471,
                      "name": "outcomeCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1437,
                      "src": "1550:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "1546:16:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1494,
                  "initializationExpression": {
                    "assignments": [
                      1467
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1467,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1496,
                        "src": "1533:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 1466,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1533:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1469,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1468,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1543:1:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1533:11:6"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1474,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "1564:3:6",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1473,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1467,
                        "src": "1564:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 1475,
                    "nodeType": "ExpressionStatement",
                    "src": "1564:3:6"
                  },
                  "nodeType": "ForStatement",
                  "src": "1528:209:6"
                }
              ]
            },
            "documentation": "@dev Contract constructor validates and sets basic event properties\n @param _collateralToken Tokens used as collateral in exchange for outcome tokens\n @param _oracle Oracle contract used to resolve the event\n @param outcomeCount Number of event outcomes",
            "id": 1496,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "Event",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1438,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1433,
                  "name": "_collateralToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 1496,
                  "src": "1196:22:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Token_$3360",
                    "typeString": "contract Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1432,
                    "name": "Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3360,
                    "src": "1196:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Token_$3360",
                      "typeString": "contract Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1435,
                  "name": "_oracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 1496,
                  "src": "1220:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Oracle_$2977",
                    "typeString": "contract Oracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1434,
                    "name": "Oracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2977,
                    "src": "1220:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Oracle_$2977",
                      "typeString": "contract Oracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1437,
                  "name": "outcomeCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1496,
                  "src": "1236:18:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1436,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1236:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1195:60:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1439,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1275:0:6"
            },
            "scope": 1680,
            "src": "1181:562:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1538,
              "nodeType": "Block",
              "src": "2001:391:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1504,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9180,
                              "src": "2105:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1505,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2105:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1506,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9237,
                            "src": "2117:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Event_$1680",
                              "typeString": "contract Event"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1507,
                            "name": "collateralTokenCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1498,
                            "src": "2123:20:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_contract$_Event_$1680",
                              "typeString": "contract Event"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1502,
                            "name": "collateralToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1422,
                            "src": "2076:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Token_$3360",
                              "typeString": "contract Token"
                            }
                          },
                          "id": 1503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3329,
                          "src": "2076:28:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 1508,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2076:68:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1501,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9183,
                        9184
                      ],
                      "referencedDeclaration": 9183,
                      "src": "2068:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2068:77:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1510,
                  "nodeType": "ExpressionStatement",
                  "src": "2068:77:6"
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1526,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9180,
                            "src": "2285:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2285:10:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1528,
                          "name": "collateralTokenCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1498,
                          "src": "2297:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1522,
                            "name": "outcomeTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1431,
                            "src": "2262:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                              "typeString": "contract OutcomeToken[] storage ref"
                            }
                          },
                          "id": 1524,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1523,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1512,
                            "src": "2276:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2262:16:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                            "typeString": "contract OutcomeToken"
                          }
                        },
                        "id": 1525,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "issue",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3051,
                        "src": "2262:22:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                          "typeString": "function (address,uint256) external"
                        }
                      },
                      "id": 1529,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2262:56:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 1530,
                    "nodeType": "ExpressionStatement",
                    "src": "2262:56:6"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1518,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1515,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1512,
                      "src": "2219:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1516,
                        "name": "outcomeTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1431,
                        "src": "2223:13:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                          "typeString": "contract OutcomeToken[] storage ref"
                        }
                      },
                      "id": 1517,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2223:20:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2219:24:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1531,
                  "initializationExpression": {
                    "assignments": [
                      1512
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1512,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1539,
                        "src": "2206:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 1511,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2206:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1514,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1513,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2216:1:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2206:11:6"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1520,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2245:3:6",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1519,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1512,
                        "src": "2245:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 1521,
                    "nodeType": "ExpressionStatement",
                    "src": "2245:3:6"
                  },
                  "nodeType": "ForStatement",
                  "src": "2201:117:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1533,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "2352:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2352:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1535,
                        "name": "collateralTokenCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1498,
                        "src": "2364:20:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1532,
                      "name": "OutcomeTokenSetIssuance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1404,
                      "src": "2328:23:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 1536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2328:57:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1537,
                  "nodeType": "ExpressionStatement",
                  "src": "2328:57:6"
                }
              ]
            },
            "documentation": "@dev Buys equal number of tokens of all outcomes, exchanging collateral tokens and sets of outcome tokens 1:1\n @param collateralTokenCount Number of collateral tokens",
            "id": 1539,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "buyAllOutcomes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1499,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1498,
                  "name": "collateralTokenCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1539,
                  "src": "1955:25:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1497,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1955:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1954:27:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1500,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2001:0:6"
            },
            "scope": 1680,
            "src": "1931:461:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1580,
              "nodeType": "Block",
              "src": "2643:378:6",
              "statements": [
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1559,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9180,
                            "src": "2796:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2796:10:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1561,
                          "name": "outcomeTokenCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1541,
                          "src": "2808:17:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1555,
                            "name": "outcomeTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1431,
                            "src": "2772:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                              "typeString": "contract OutcomeToken[] storage ref"
                            }
                          },
                          "id": 1557,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1556,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1545,
                            "src": "2786:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2772:16:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                            "typeString": "contract OutcomeToken"
                          }
                        },
                        "id": 1558,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "revoke",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3084,
                        "src": "2772:23:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                          "typeString": "function (address,uint256) external"
                        }
                      },
                      "id": 1562,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2772:54:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 1563,
                    "nodeType": "ExpressionStatement",
                    "src": "2772:54:6"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1548,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1545,
                      "src": "2729:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1549,
                        "name": "outcomeTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1431,
                        "src": "2733:13:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                          "typeString": "contract OutcomeToken[] storage ref"
                        }
                      },
                      "id": 1550,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2733:20:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2729:24:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1564,
                  "initializationExpression": {
                    "assignments": [
                      1545
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1545,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1581,
                        "src": "2716:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 1544,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2716:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1547,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1546,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2726:1:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2716:11:6"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1553,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2755:3:6",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1552,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1545,
                        "src": "2755:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 1554,
                    "nodeType": "ExpressionStatement",
                    "src": "2755:3:6"
                  },
                  "nodeType": "ForStatement",
                  "src": "2711:115:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1568,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9180,
                              "src": "2917:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1569,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2917:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1570,
                            "name": "outcomeTokenCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1541,
                            "src": "2929:17:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1566,
                            "name": "collateralToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1422,
                            "src": "2892:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Token_$3360",
                              "typeString": "contract Token"
                            }
                          },
                          "id": 1567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3318,
                          "src": "2892:24:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 1571,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2892:55:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1565,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9183,
                        9184
                      ],
                      "referencedDeclaration": 9183,
                      "src": "2884:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2884:64:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1573,
                  "nodeType": "ExpressionStatement",
                  "src": "2884:64:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1575,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "2984:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2984:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1577,
                        "name": "outcomeTokenCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1541,
                        "src": "2996:17:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1574,
                      "name": "OutcomeTokenSetRevocation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1410,
                      "src": "2958:25:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 1578,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2958:56:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1579,
                  "nodeType": "ExpressionStatement",
                  "src": "2958:56:6"
                }
              ]
            },
            "documentation": "@dev Sells equal number of tokens of all outcomes, exchanging collateral tokens and sets of outcome tokens 1:1\n @param outcomeTokenCount Number of outcome tokens",
            "id": 1581,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "sellAllOutcomes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1542,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1541,
                  "name": "outcomeTokenCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1581,
                  "src": "2600:22:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1540,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2600:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2599:24:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1543,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2643:0:6"
            },
            "scope": 1680,
            "src": "2575:446:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1607,
              "nodeType": "Block",
              "src": "3108:282:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1590,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "3209:13:6",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1585,
                            "name": "isOutcomeSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1426,
                            "src": "3210:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1587,
                              "name": "oracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1424,
                              "src": "3226:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Oracle_$2977",
                                "typeString": "contract Oracle"
                              }
                            },
                            "id": 1588,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isOutcomeSet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2971,
                            "src": "3226:19:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                              "typeString": "function () view external returns (bool)"
                            }
                          },
                          "id": 1589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3226:21:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3209:38:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1584,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9183,
                        9184
                      ],
                      "referencedDeclaration": 9183,
                      "src": "3201:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1591,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3201:47:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1592,
                  "nodeType": "ExpressionStatement",
                  "src": "3201:47:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1597,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1593,
                      "name": "outcome",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1428,
                      "src": "3289:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1594,
                          "name": "oracle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1424,
                          "src": "3299:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Oracle_$2977",
                            "typeString": "contract Oracle"
                          }
                        },
                        "id": 1595,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getOutcome",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2976,
                        "src": "3299:17:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_int256_$",
                          "typeString": "function () view external returns (int256)"
                        }
                      },
                      "id": 1596,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3299:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3289:29:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 1598,
                  "nodeType": "ExpressionStatement",
                  "src": "3289:29:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1601,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1599,
                      "name": "isOutcomeSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1426,
                      "src": "3328:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1600,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3343:4:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3328:19:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1602,
                  "nodeType": "ExpressionStatement",
                  "src": "3328:19:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1604,
                        "name": "outcome",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1428,
                        "src": "3375:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "id": 1603,
                      "name": "OutcomeAssignment",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1414,
                      "src": "3357:17:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_int256_$returns$__$",
                        "typeString": "function (int256)"
                      }
                    },
                    "id": 1605,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3357:26:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1606,
                  "nodeType": "ExpressionStatement",
                  "src": "3357:26:6"
                }
              ]
            },
            "documentation": "@dev Sets winning event outcome",
            "id": 1608,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "setOutcome",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1582,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3086:2:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1583,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3108:0:6"
            },
            "scope": 1680,
            "src": "3067:323:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1618,
              "nodeType": "Block",
              "src": "3548:51:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1614,
                          "name": "outcomeTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1431,
                          "src": "3571:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                            "typeString": "contract OutcomeToken[] storage ref"
                          }
                        },
                        "id": 1615,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3571:20:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1613,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3565:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint8_$",
                        "typeString": "type(uint8)"
                      },
                      "typeName": "uint8"
                    },
                    "id": 1616,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3565:27:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 1612,
                  "id": 1617,
                  "nodeType": "Return",
                  "src": "3558:34:6"
                }
              ]
            },
            "documentation": "@dev Returns outcome count\n @return Outcome count",
            "id": 1619,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getOutcomeCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1609,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3485:2:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1612,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1611,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1619,
                  "src": "3537:5:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1610,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3537:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3536:7:6"
            },
            "scope": 1680,
            "src": "3461:138:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1627,
              "nodeType": "Block",
              "src": "3775:37:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1625,
                    "name": "outcomeTokens",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1431,
                    "src": "3792:13:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                      "typeString": "contract OutcomeToken[] storage ref"
                    }
                  },
                  "functionReturnParameters": 1624,
                  "id": 1626,
                  "nodeType": "Return",
                  "src": "3785:20:6"
                }
              ]
            },
            "documentation": "@dev Returns outcome tokens array\n @return Outcome tokens",
            "id": 1628,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getOutcomeTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1620,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3703:2:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1624,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1623,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1628,
                  "src": "3755:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_memory_ptr",
                    "typeString": "contract OutcomeToken[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 1621,
                      "name": "OutcomeToken",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 3085,
                      "src": "3755:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                        "typeString": "contract OutcomeToken"
                      }
                    },
                    "id": 1622,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3755:14:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage_ptr",
                      "typeString": "contract OutcomeToken[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3754:16:6"
            },
            "scope": 1680,
            "src": "3678:134:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1668,
              "nodeType": "Block",
              "src": "4063:221:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1643,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1636,
                      "name": "outcomeTokenDistribution",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1634,
                      "src": "4073:24:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1640,
                            "name": "outcomeTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1431,
                            "src": "4111:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                              "typeString": "contract OutcomeToken[] storage ref"
                            }
                          },
                          "id": 1641,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4111:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1639,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "4100:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                          "typeString": "function (uint256) pure returns (uint256[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1637,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4104:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1638,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4104:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        }
                      },
                      "id": 1642,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4100:32:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "4073:59:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "id": 1644,
                  "nodeType": "ExpressionStatement",
                  "src": "4073:59:6"
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1656,
                          "name": "outcomeTokenDistribution",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1634,
                          "src": "4214:24:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 1658,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1657,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1646,
                          "src": "4239:1:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "4214:27:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1663,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1630,
                            "src": "4271:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1659,
                              "name": "outcomeTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1431,
                              "src": "4244:13:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                                "typeString": "contract OutcomeToken[] storage ref"
                              }
                            },
                            "id": 1661,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1660,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1646,
                              "src": "4258:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4244:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                              "typeString": "contract OutcomeToken"
                            }
                          },
                          "id": 1662,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3282,
                          "src": "4244:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 1664,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4244:33:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4214:63:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1666,
                    "nodeType": "ExpressionStatement",
                    "src": "4214:63:6"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1652,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1649,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1646,
                      "src": "4160:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1650,
                        "name": "outcomeTokenDistribution",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1634,
                        "src": "4164:24:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 1651,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4164:31:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4160:35:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1667,
                  "initializationExpression": {
                    "assignments": [
                      1646
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1646,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1669,
                        "src": "4147:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 1645,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "4147:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1648,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1647,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4157:1:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4147:11:6"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1654,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4197:3:6",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1653,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1646,
                        "src": "4197:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 1655,
                    "nodeType": "ExpressionStatement",
                    "src": "4197:3:6"
                  },
                  "nodeType": "ForStatement",
                  "src": "4142:135:6"
                }
              ]
            },
            "documentation": "@dev Returns the amount of outcome tokens held by owner\n @return Outcome token distribution",
            "id": 1669,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getOutcomeTokenDistribution",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1631,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1630,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 1669,
                  "src": "3962:13:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1629,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3962:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3961:15:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1634,
                  "name": "outcomeTokenDistribution",
                  "nodeType": "VariableDeclaration",
                  "scope": 1669,
                  "src": "4026:31:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1632,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "4026:4:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1633,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4026:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4025:33:6"
            },
            "scope": 1680,
            "src": "3925:359:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": null,
            "documentation": "@dev Calculates and returns event hash\n @return Event hash",
            "id": 1674,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEventHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1670,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4385:2:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1673,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1672,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1674,
                  "src": "4413:7:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1671,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4413:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4412:9:6"
            },
            "scope": 1680,
            "src": "4364:58:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": null,
            "documentation": "@dev Exchanges sender's winning outcome tokens for collateral tokens\n @return Sender's winnings",
            "id": 1679,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "redeemWinnings",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1675,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4562:2:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1678,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1677,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1679,
                  "src": "4581:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1676,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4581:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4580:6:6"
            },
            "scope": 1680,
            "src": "4539:48:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1681,
        "src": "263:4326:6"
      }
    ],
    "src": "0:4590:6"
  },
  "legacyAST": {
    "absolutePath": "@gnosis.pm/pm-contracts/contracts/Events/Event.sol",
    "exportedSymbols": {
      "Event": [
        1680
      ]
    },
    "id": 1681,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1389,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".15"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:6"
      },
      {
        "absolutePath": "@gnosis.pm/pm-contracts/contracts/Tokens/Token.sol",
        "file": "../Tokens/Token.sol",
        "id": 1390,
        "nodeType": "ImportDirective",
        "scope": 1681,
        "sourceUnit": 3361,
        "src": "25:29:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@gnosis.pm/pm-contracts/contracts/Tokens/OutcomeToken.sol",
        "file": "../Tokens/OutcomeToken.sol",
        "id": 1391,
        "nodeType": "ImportDirective",
        "scope": 1681,
        "sourceUnit": 3086,
        "src": "55:36:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@gnosis.pm/pm-contracts/contracts/Oracles/Oracle.sol",
        "file": "../Oracles/Oracle.sol",
        "id": 1392,
        "nodeType": "ImportDirective",
        "scope": 1681,
        "sourceUnit": 2978,
        "src": "92:31:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          3085
        ],
        "contractKind": "contract",
        "documentation": "@title Event contract - Provide basic functionality required by different event types\n @author Stefan George - <stefan@gnosis.pm>",
        "fullyImplemented": false,
        "id": 1680,
        "linearizedBaseContracts": [
          1680
        ],
        "name": "Event",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 1398,
            "name": "OutcomeTokenCreation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1397,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1394,
                  "indexed": false,
                  "name": "outcomeToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 1398,
                  "src": "342:25:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                    "typeString": "contract OutcomeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1393,
                    "name": "OutcomeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3085,
                    "src": "342:12:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                      "typeString": "contract OutcomeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1396,
                  "indexed": false,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 1398,
                  "src": "369:11:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1395,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "369:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "341:40:6"
            },
            "src": "315:67:6"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1404,
            "name": "OutcomeTokenSetIssuance",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1403,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1400,
                  "indexed": true,
                  "name": "buyer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1404,
                  "src": "417:21:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1399,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "417:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1402,
                  "indexed": false,
                  "name": "collateralTokenCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1404,
                  "src": "440:25:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1401,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "440:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "416:50:6"
            },
            "src": "387:80:6"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1410,
            "name": "OutcomeTokenSetRevocation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1409,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1406,
                  "indexed": true,
                  "name": "seller",
                  "nodeType": "VariableDeclaration",
                  "scope": 1410,
                  "src": "504:22:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1405,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "504:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1408,
                  "indexed": false,
                  "name": "outcomeTokenCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1410,
                  "src": "528:22:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1407,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "528:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "503:48:6"
            },
            "src": "472:80:6"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1414,
            "name": "OutcomeAssignment",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1413,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1412,
                  "indexed": false,
                  "name": "outcome",
                  "nodeType": "VariableDeclaration",
                  "scope": 1414,
                  "src": "581:11:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 1411,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "581:3:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "580:13:6"
            },
            "src": "557:37:6"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1420,
            "name": "WinningsRedemption",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1419,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1416,
                  "indexed": true,
                  "name": "receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 1420,
                  "src": "624:24:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1415,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "624:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1418,
                  "indexed": false,
                  "name": "winnings",
                  "nodeType": "VariableDeclaration",
                  "scope": 1420,
                  "src": "650:13:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1417,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "650:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "623:41:6"
            },
            "src": "599:66:6"
          },
          {
            "constant": false,
            "id": 1422,
            "name": "collateralToken",
            "nodeType": "VariableDeclaration",
            "scope": 1680,
            "src": "702:28:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Token_$3360",
              "typeString": "contract Token"
            },
            "typeName": {
              "contractScope": null,
              "id": 1421,
              "name": "Token",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3360,
              "src": "702:5:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Token_$3360",
                "typeString": "contract Token"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1424,
            "name": "oracle",
            "nodeType": "VariableDeclaration",
            "scope": 1680,
            "src": "736:20:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Oracle_$2977",
              "typeString": "contract Oracle"
            },
            "typeName": {
              "contractScope": null,
              "id": 1423,
              "name": "Oracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2977,
              "src": "736:6:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Oracle_$2977",
                "typeString": "contract Oracle"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1426,
            "name": "isOutcomeSet",
            "nodeType": "VariableDeclaration",
            "scope": 1680,
            "src": "762:24:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 1425,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "762:4:6",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1428,
            "name": "outcome",
            "nodeType": "VariableDeclaration",
            "scope": 1680,
            "src": "792:18:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_int256",
              "typeString": "int256"
            },
            "typeName": {
              "id": 1427,
              "name": "int",
              "nodeType": "ElementaryTypeName",
              "src": "792:3:6",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1431,
            "name": "outcomeTokens",
            "nodeType": "VariableDeclaration",
            "scope": 1680,
            "src": "816:35:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
              "typeString": "contract OutcomeToken[]"
            },
            "typeName": {
              "baseType": {
                "contractScope": null,
                "id": 1429,
                "name": "OutcomeToken",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 3085,
                "src": "816:12:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                  "typeString": "contract OutcomeToken"
                }
              },
              "id": 1430,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "816:14:6",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage_ptr",
                "typeString": "contract OutcomeToken[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1495,
              "nodeType": "Block",
              "src": "1275:468:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 1445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1442,
                                  "name": "_collateralToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1433,
                                  "src": "1327:16:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Token_$3360",
                                    "typeString": "contract Token"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Token_$3360",
                                    "typeString": "contract Token"
                                  }
                                ],
                                "id": 1441,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1319:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 1443,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1319:25:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1348:1:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1319:30:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 1450,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1447,
                                  "name": "_oracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1435,
                                  "src": "1361:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Oracle_$2977",
                                    "typeString": "contract Oracle"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Oracle_$2977",
                                    "typeString": "contract Oracle"
                                  }
                                ],
                                "id": 1446,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1353:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 1448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1353:16:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1373:1:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1353:21:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1319:55:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 1454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1452,
                            "name": "outcomeCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1437,
                            "src": "1378:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1394:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "1378:17:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1319:76:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1440,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9183,
                        9184
                      ],
                      "referencedDeclaration": 9183,
                      "src": "1311:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1456,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1311:85:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1457,
                  "nodeType": "ExpressionStatement",
                  "src": "1311:85:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1458,
                      "name": "collateralToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1422,
                      "src": "1406:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Token_$3360",
                        "typeString": "contract Token"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1459,
                      "name": "_collateralToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1433,
                      "src": "1424:16:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Token_$3360",
                        "typeString": "contract Token"
                      }
                    },
                    "src": "1406:34:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Token_$3360",
                      "typeString": "contract Token"
                    }
                  },
                  "id": 1461,
                  "nodeType": "ExpressionStatement",
                  "src": "1406:34:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1462,
                      "name": "oracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1424,
                      "src": "1450:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Oracle_$2977",
                        "typeString": "contract Oracle"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1463,
                      "name": "_oracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1435,
                      "src": "1459:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Oracle_$2977",
                        "typeString": "contract Oracle"
                      }
                    },
                    "src": "1450:16:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Oracle_$2977",
                      "typeString": "contract Oracle"
                    }
                  },
                  "id": 1465,
                  "nodeType": "ExpressionStatement",
                  "src": "1450:16:6"
                },
                {
                  "body": {
                    "id": 1493,
                    "nodeType": "Block",
                    "src": "1569:168:6",
                    "statements": [
                      {
                        "assignments": [
                          1477
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1477,
                            "name": "outcomeToken",
                            "nodeType": "VariableDeclaration",
                            "scope": 1496,
                            "src": "1583:25:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                              "typeString": "contract OutcomeToken"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1476,
                              "name": "OutcomeToken",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3085,
                              "src": "1583:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                                "typeString": "contract OutcomeToken"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1481,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1479,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1611:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_OutcomeToken_$3085_$",
                              "typeString": "function () returns (contract OutcomeToken)"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1478,
                              "name": "OutcomeToken",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3085,
                              "src": "1615:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                                "typeString": "contract OutcomeToken"
                              }
                            }
                          },
                          "id": 1480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1611:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                            "typeString": "contract OutcomeToken"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1583:46:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1485,
                              "name": "outcomeToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1477,
                              "src": "1662:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                                "typeString": "contract OutcomeToken"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                                "typeString": "contract OutcomeToken"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1482,
                              "name": "outcomeTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1431,
                              "src": "1643:13:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                                "typeString": "contract OutcomeToken[] storage ref"
                              }
                            },
                            "id": 1484,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1643:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_OutcomeToken_$3085_$returns$_t_uint256_$",
                              "typeString": "function (contract OutcomeToken) returns (uint256)"
                            }
                          },
                          "id": 1486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1643:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1487,
                        "nodeType": "ExpressionStatement",
                        "src": "1643:32:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1489,
                              "name": "outcomeToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1477,
                              "src": "1710:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                                "typeString": "contract OutcomeToken"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1490,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1467,
                              "src": "1724:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                                "typeString": "contract OutcomeToken"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 1488,
                            "name": "OutcomeTokenCreation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1398,
                            "src": "1689:20:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_contract$_OutcomeToken_$3085_$_t_uint8_$returns$__$",
                              "typeString": "function (contract OutcomeToken,uint8)"
                            }
                          },
                          "id": 1491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1689:37:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1492,
                        "nodeType": "ExpressionStatement",
                        "src": "1689:37:6"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 1472,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1470,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1467,
                      "src": "1546:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1471,
                      "name": "outcomeCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1437,
                      "src": "1550:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "1546:16:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1494,
                  "initializationExpression": {
                    "assignments": [
                      1467
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1467,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1496,
                        "src": "1533:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 1466,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1533:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1469,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1468,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1543:1:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1533:11:6"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1474,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "1564:3:6",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1473,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1467,
                        "src": "1564:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 1475,
                    "nodeType": "ExpressionStatement",
                    "src": "1564:3:6"
                  },
                  "nodeType": "ForStatement",
                  "src": "1528:209:6"
                }
              ]
            },
            "documentation": "@dev Contract constructor validates and sets basic event properties\n @param _collateralToken Tokens used as collateral in exchange for outcome tokens\n @param _oracle Oracle contract used to resolve the event\n @param outcomeCount Number of event outcomes",
            "id": 1496,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "Event",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1438,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1433,
                  "name": "_collateralToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 1496,
                  "src": "1196:22:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Token_$3360",
                    "typeString": "contract Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1432,
                    "name": "Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3360,
                    "src": "1196:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Token_$3360",
                      "typeString": "contract Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1435,
                  "name": "_oracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 1496,
                  "src": "1220:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Oracle_$2977",
                    "typeString": "contract Oracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1434,
                    "name": "Oracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2977,
                    "src": "1220:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Oracle_$2977",
                      "typeString": "contract Oracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1437,
                  "name": "outcomeCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1496,
                  "src": "1236:18:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1436,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1236:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1195:60:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1439,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1275:0:6"
            },
            "scope": 1680,
            "src": "1181:562:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1538,
              "nodeType": "Block",
              "src": "2001:391:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1504,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9180,
                              "src": "2105:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1505,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2105:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1506,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9237,
                            "src": "2117:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Event_$1680",
                              "typeString": "contract Event"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1507,
                            "name": "collateralTokenCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1498,
                            "src": "2123:20:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_contract$_Event_$1680",
                              "typeString": "contract Event"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1502,
                            "name": "collateralToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1422,
                            "src": "2076:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Token_$3360",
                              "typeString": "contract Token"
                            }
                          },
                          "id": 1503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3329,
                          "src": "2076:28:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 1508,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2076:68:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1501,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9183,
                        9184
                      ],
                      "referencedDeclaration": 9183,
                      "src": "2068:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2068:77:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1510,
                  "nodeType": "ExpressionStatement",
                  "src": "2068:77:6"
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1526,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9180,
                            "src": "2285:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2285:10:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1528,
                          "name": "collateralTokenCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1498,
                          "src": "2297:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1522,
                            "name": "outcomeTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1431,
                            "src": "2262:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                              "typeString": "contract OutcomeToken[] storage ref"
                            }
                          },
                          "id": 1524,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1523,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1512,
                            "src": "2276:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2262:16:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                            "typeString": "contract OutcomeToken"
                          }
                        },
                        "id": 1525,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "issue",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3051,
                        "src": "2262:22:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                          "typeString": "function (address,uint256) external"
                        }
                      },
                      "id": 1529,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2262:56:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 1530,
                    "nodeType": "ExpressionStatement",
                    "src": "2262:56:6"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1518,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1515,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1512,
                      "src": "2219:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1516,
                        "name": "outcomeTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1431,
                        "src": "2223:13:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                          "typeString": "contract OutcomeToken[] storage ref"
                        }
                      },
                      "id": 1517,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2223:20:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2219:24:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1531,
                  "initializationExpression": {
                    "assignments": [
                      1512
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1512,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1539,
                        "src": "2206:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 1511,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2206:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1514,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1513,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2216:1:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2206:11:6"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1520,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2245:3:6",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1519,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1512,
                        "src": "2245:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 1521,
                    "nodeType": "ExpressionStatement",
                    "src": "2245:3:6"
                  },
                  "nodeType": "ForStatement",
                  "src": "2201:117:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1533,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "2352:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2352:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1535,
                        "name": "collateralTokenCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1498,
                        "src": "2364:20:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1532,
                      "name": "OutcomeTokenSetIssuance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1404,
                      "src": "2328:23:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 1536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2328:57:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1537,
                  "nodeType": "ExpressionStatement",
                  "src": "2328:57:6"
                }
              ]
            },
            "documentation": "@dev Buys equal number of tokens of all outcomes, exchanging collateral tokens and sets of outcome tokens 1:1\n @param collateralTokenCount Number of collateral tokens",
            "id": 1539,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "buyAllOutcomes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1499,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1498,
                  "name": "collateralTokenCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1539,
                  "src": "1955:25:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1497,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1955:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1954:27:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1500,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2001:0:6"
            },
            "scope": 1680,
            "src": "1931:461:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1580,
              "nodeType": "Block",
              "src": "2643:378:6",
              "statements": [
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1559,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9180,
                            "src": "2796:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2796:10:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1561,
                          "name": "outcomeTokenCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1541,
                          "src": "2808:17:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1555,
                            "name": "outcomeTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1431,
                            "src": "2772:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                              "typeString": "contract OutcomeToken[] storage ref"
                            }
                          },
                          "id": 1557,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1556,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1545,
                            "src": "2786:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2772:16:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                            "typeString": "contract OutcomeToken"
                          }
                        },
                        "id": 1558,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "revoke",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3084,
                        "src": "2772:23:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                          "typeString": "function (address,uint256) external"
                        }
                      },
                      "id": 1562,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2772:54:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 1563,
                    "nodeType": "ExpressionStatement",
                    "src": "2772:54:6"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1548,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1545,
                      "src": "2729:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1549,
                        "name": "outcomeTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1431,
                        "src": "2733:13:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                          "typeString": "contract OutcomeToken[] storage ref"
                        }
                      },
                      "id": 1550,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2733:20:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2729:24:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1564,
                  "initializationExpression": {
                    "assignments": [
                      1545
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1545,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1581,
                        "src": "2716:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 1544,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2716:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1547,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1546,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2726:1:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2716:11:6"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1553,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2755:3:6",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1552,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1545,
                        "src": "2755:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 1554,
                    "nodeType": "ExpressionStatement",
                    "src": "2755:3:6"
                  },
                  "nodeType": "ForStatement",
                  "src": "2711:115:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1568,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9180,
                              "src": "2917:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1569,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2917:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1570,
                            "name": "outcomeTokenCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1541,
                            "src": "2929:17:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1566,
                            "name": "collateralToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1422,
                            "src": "2892:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Token_$3360",
                              "typeString": "contract Token"
                            }
                          },
                          "id": 1567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3318,
                          "src": "2892:24:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 1571,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2892:55:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1565,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9183,
                        9184
                      ],
                      "referencedDeclaration": 9183,
                      "src": "2884:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2884:64:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1573,
                  "nodeType": "ExpressionStatement",
                  "src": "2884:64:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1575,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "2984:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2984:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1577,
                        "name": "outcomeTokenCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1541,
                        "src": "2996:17:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1574,
                      "name": "OutcomeTokenSetRevocation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1410,
                      "src": "2958:25:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 1578,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2958:56:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1579,
                  "nodeType": "ExpressionStatement",
                  "src": "2958:56:6"
                }
              ]
            },
            "documentation": "@dev Sells equal number of tokens of all outcomes, exchanging collateral tokens and sets of outcome tokens 1:1\n @param outcomeTokenCount Number of outcome tokens",
            "id": 1581,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "sellAllOutcomes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1542,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1541,
                  "name": "outcomeTokenCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1581,
                  "src": "2600:22:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1540,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2600:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2599:24:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1543,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2643:0:6"
            },
            "scope": 1680,
            "src": "2575:446:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1607,
              "nodeType": "Block",
              "src": "3108:282:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1590,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "3209:13:6",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1585,
                            "name": "isOutcomeSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1426,
                            "src": "3210:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1587,
                              "name": "oracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1424,
                              "src": "3226:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Oracle_$2977",
                                "typeString": "contract Oracle"
                              }
                            },
                            "id": 1588,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isOutcomeSet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2971,
                            "src": "3226:19:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                              "typeString": "function () view external returns (bool)"
                            }
                          },
                          "id": 1589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3226:21:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3209:38:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1584,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9183,
                        9184
                      ],
                      "referencedDeclaration": 9183,
                      "src": "3201:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1591,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3201:47:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1592,
                  "nodeType": "ExpressionStatement",
                  "src": "3201:47:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1597,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1593,
                      "name": "outcome",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1428,
                      "src": "3289:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1594,
                          "name": "oracle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1424,
                          "src": "3299:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Oracle_$2977",
                            "typeString": "contract Oracle"
                          }
                        },
                        "id": 1595,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getOutcome",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2976,
                        "src": "3299:17:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_int256_$",
                          "typeString": "function () view external returns (int256)"
                        }
                      },
                      "id": 1596,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3299:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3289:29:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 1598,
                  "nodeType": "ExpressionStatement",
                  "src": "3289:29:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1601,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1599,
                      "name": "isOutcomeSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1426,
                      "src": "3328:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1600,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3343:4:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3328:19:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1602,
                  "nodeType": "ExpressionStatement",
                  "src": "3328:19:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1604,
                        "name": "outcome",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1428,
                        "src": "3375:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "id": 1603,
                      "name": "OutcomeAssignment",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1414,
                      "src": "3357:17:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_int256_$returns$__$",
                        "typeString": "function (int256)"
                      }
                    },
                    "id": 1605,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3357:26:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1606,
                  "nodeType": "ExpressionStatement",
                  "src": "3357:26:6"
                }
              ]
            },
            "documentation": "@dev Sets winning event outcome",
            "id": 1608,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "setOutcome",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1582,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3086:2:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1583,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3108:0:6"
            },
            "scope": 1680,
            "src": "3067:323:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1618,
              "nodeType": "Block",
              "src": "3548:51:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1614,
                          "name": "outcomeTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1431,
                          "src": "3571:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                            "typeString": "contract OutcomeToken[] storage ref"
                          }
                        },
                        "id": 1615,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3571:20:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1613,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3565:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint8_$",
                        "typeString": "type(uint8)"
                      },
                      "typeName": "uint8"
                    },
                    "id": 1616,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3565:27:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 1612,
                  "id": 1617,
                  "nodeType": "Return",
                  "src": "3558:34:6"
                }
              ]
            },
            "documentation": "@dev Returns outcome count\n @return Outcome count",
            "id": 1619,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getOutcomeCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1609,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3485:2:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1612,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1611,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1619,
                  "src": "3537:5:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1610,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3537:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3536:7:6"
            },
            "scope": 1680,
            "src": "3461:138:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1627,
              "nodeType": "Block",
              "src": "3775:37:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1625,
                    "name": "outcomeTokens",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1431,
                    "src": "3792:13:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                      "typeString": "contract OutcomeToken[] storage ref"
                    }
                  },
                  "functionReturnParameters": 1624,
                  "id": 1626,
                  "nodeType": "Return",
                  "src": "3785:20:6"
                }
              ]
            },
            "documentation": "@dev Returns outcome tokens array\n @return Outcome tokens",
            "id": 1628,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getOutcomeTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1620,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3703:2:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1624,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1623,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1628,
                  "src": "3755:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_memory_ptr",
                    "typeString": "contract OutcomeToken[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 1621,
                      "name": "OutcomeToken",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 3085,
                      "src": "3755:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                        "typeString": "contract OutcomeToken"
                      }
                    },
                    "id": 1622,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3755:14:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage_ptr",
                      "typeString": "contract OutcomeToken[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3754:16:6"
            },
            "scope": 1680,
            "src": "3678:134:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1668,
              "nodeType": "Block",
              "src": "4063:221:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1643,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1636,
                      "name": "outcomeTokenDistribution",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1634,
                      "src": "4073:24:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1640,
                            "name": "outcomeTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1431,
                            "src": "4111:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                              "typeString": "contract OutcomeToken[] storage ref"
                            }
                          },
                          "id": 1641,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4111:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1639,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "4100:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                          "typeString": "function (uint256) pure returns (uint256[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1637,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4104:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1638,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4104:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        }
                      },
                      "id": 1642,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4100:32:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "4073:59:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "id": 1644,
                  "nodeType": "ExpressionStatement",
                  "src": "4073:59:6"
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1656,
                          "name": "outcomeTokenDistribution",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1634,
                          "src": "4214:24:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 1658,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1657,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1646,
                          "src": "4239:1:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "4214:27:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1663,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1630,
                            "src": "4271:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1659,
                              "name": "outcomeTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1431,
                              "src": "4244:13:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_OutcomeToken_$3085_$dyn_storage",
                                "typeString": "contract OutcomeToken[] storage ref"
                              }
                            },
                            "id": 1661,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1660,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1646,
                              "src": "4258:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4244:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_OutcomeToken_$3085",
                              "typeString": "contract OutcomeToken"
                            }
                          },
                          "id": 1662,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3282,
                          "src": "4244:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 1664,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4244:33:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4214:63:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1666,
                    "nodeType": "ExpressionStatement",
                    "src": "4214:63:6"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1652,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1649,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1646,
                      "src": "4160:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1650,
                        "name": "outcomeTokenDistribution",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1634,
                        "src": "4164:24:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 1651,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4164:31:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4160:35:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1667,
                  "initializationExpression": {
                    "assignments": [
                      1646
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1646,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1669,
                        "src": "4147:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 1645,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "4147:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1648,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1647,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4157:1:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4147:11:6"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1654,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4197:3:6",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1653,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1646,
                        "src": "4197:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 1655,
                    "nodeType": "ExpressionStatement",
                    "src": "4197:3:6"
                  },
                  "nodeType": "ForStatement",
                  "src": "4142:135:6"
                }
              ]
            },
            "documentation": "@dev Returns the amount of outcome tokens held by owner\n @return Outcome token distribution",
            "id": 1669,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getOutcomeTokenDistribution",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1631,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1630,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 1669,
                  "src": "3962:13:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1629,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3962:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3961:15:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1634,
                  "name": "outcomeTokenDistribution",
                  "nodeType": "VariableDeclaration",
                  "scope": 1669,
                  "src": "4026:31:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1632,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "4026:4:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1633,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4026:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4025:33:6"
            },
            "scope": 1680,
            "src": "3925:359:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": null,
            "documentation": "@dev Calculates and returns event hash\n @return Event hash",
            "id": 1674,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEventHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1670,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4385:2:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1673,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1672,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1674,
                  "src": "4413:7:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1671,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4413:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4412:9:6"
            },
            "scope": 1680,
            "src": "4364:58:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": null,
            "documentation": "@dev Exchanges sender's winning outcome tokens for collateral tokens\n @return Sender's winnings",
            "id": 1679,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "redeemWinnings",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1675,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4562:2:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1678,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1677,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1679,
                  "src": "4581:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1676,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4581:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4580:6:6"
            },
            "scope": 1680,
            "src": "4539:48:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1681,
        "src": "263:4326:6"
      }
    ],
    "src": "0:4590:6"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.0-beta.1",
  "updatedAt": "2018-10-27T21:23:29.078Z"
}