{
  "contractName": "Voting",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "nextPollId",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x2b786571"
    },
    {
      "inputs": [
        {
          "name": "treasuryAddress",
          "type": "address"
        },
        {
          "name": "_emitterAddress",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor",
      "signature": "constructor"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_commitEndBlock",
          "type": "uint256"
        },
        {
          "name": "_revealEndBlock",
          "type": "uint256"
        }
      ],
      "name": "createPoll",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0xbad62d20"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_pollId",
          "type": "uint256"
        },
        {
          "name": "_vote",
          "type": "bytes32"
        },
        {
          "name": "_tokensToCommit",
          "type": "uint256"
        }
      ],
      "name": "commitVote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0xfa07153a"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_pollId",
          "type": "uint256"
        },
        {
          "name": "_voteOption",
          "type": "uint256"
        },
        {
          "name": "_voteSalt",
          "type": "uint256"
        }
      ],
      "name": "revealVote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0xb11d8bb8"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_pollId",
          "type": "uint256"
        }
      ],
      "name": "winningOption",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x0dca7ed8"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_pollId",
          "type": "uint256"
        }
      ],
      "name": "totalWinningTokens",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x1b89ef0f"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_pollId",
          "type": "uint256"
        },
        {
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "userWinningTokens",
      "outputs": [
        {
          "name": "tokens",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xf8a2e510"
    }
  ],
  "bytecode": "0x6080604052600160025534801561001557600080fd5b506040516040806109ec8339810180604052604081101561003557600080fd5b50805160209091015160018054600160a060020a03928316600160a060020a03199182161790915560008054929093169116179055610973806100796000396000f3fe6080604052600436106100825763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630dca7ed881146100875780631b89ef0f146100c35780632b786571146100ed578063b11d8bb814610102578063bad62d201461013a578063f8a2e5101461016a578063fa07153a146101a3575b600080fd5b34801561009357600080fd5b506100b1600480360360208110156100aa57600080fd5b50356101d9565b60408051918252519081900360200190f35b3480156100cf57600080fd5b506100b1600480360360208110156100e657600080fd5b5035610259565b3480156100f957600080fd5b506100b16102d9565b34801561010e57600080fd5b506101386004803603606081101561012557600080fd5b50803590602081013590604001356102df565b005b34801561014657600080fd5b506100b16004803603604081101561015d57600080fd5b50803590602001356104ea565b34801561017657600080fd5b506100b16004803603604081101561018d57600080fd5b5080359060200135600160a060020a03166106a8565b3480156101af57600080fd5b50610138600480360360608110156101c657600080fd5b5080359060208101359060400135610797565b60006101e36108db565b50600082815260036020818152604092839020835160c081018552815481526001820154600160a060020a03169281019290925260028101549382019390935290820154606082018190526004830154608083015260059092015460a082015290431161024f57600080fd5b6080015192915050565b60006102636108db565b50600082815260036020818152604092839020835160c081018552815481526001820154600160a060020a03169281019290925260028101549382019390935290820154606082018190526004830154608083015260059092015460a08201529043116102cf57600080fd5b60a0015192915050565b60025481565b6000838152600360209081526040808320338452600981019092529091206002820154431161030d57600080fd5b600382015443111561031e57600080fd5b33600090815260078301602052604090205460ff16151561033e57600080fd5b33600090815260088301602052604090205460ff161561035d57600080fd5b6001810154600054604080517f5121220c0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a0390921691635121220c91602480820192602092909190829003018186803b1580156103c657600080fd5b505afa1580156103da573d6000803e3d6000fd5b505050506040513d60208110156103f057600080fd5b505110156103fd57600080fd5b604080516020808201879052818301869052825180830384018152606090920190925280519101208154811461043257600080fd5b60028201849055600382018590553360009081526008840160209081526040808320805460ff1916600190811790915585015488845260068701909252909120546104829163ffffffff6108c216565b6000868152600685016020526040902055600483015485148015906104ba575060058301546000868152600685016020526040902054115b156104c757600483018590555b505060048101546000908152600682016020526040902054600590910155505050565b60008183106104f857600080fd5b600280546000818152600360208190526040918290209283556001808401805473ffffffffffffffffffffffffffffffffffffffff191633179055838501889055908301869055835401835580518381526060818101909252919290919081602001602082028038833950505060018301548151919250600160a060020a0316908290600090811061058657fe5b6020908102909101015281548151829060019081106105a157fe5b6020908102909101810191909152600154604080517f2790240100000000000000000000000000000000000000000000000000000000815260048101918252600b60448201527f506f6c6c437265617465640000000000000000000000000000000000000000006064820152608060248201908152855160848301528551600160a060020a039094169463279024019487949384939260a490910191868201910280838360005b83811015610660578181015183820152602001610648565b505050509050019350505050600060405180830381600087803b15801561068657600080fd5b505af115801561069a573d6000803e3d6000fd5b505092549695505050505050565b60006106b26108db565b50600083815260036020818152604092839020835160c081018552815481526001820154600160a060020a03169281019290925260028101549382019390935290820154606082018190526004830154608083015260059092015460a082015290431161071e57600080fd5b61072661091b565b506000848152600360208181526040808420600160a060020a038816855260090182529283902083516080818101865282548252600183015493820193909352600282015494810194909452909101546060830181905290830151141561078f57806020015192505b505092915050565b60008381526003602090815260408083203384526009810190925290912060028201544311156107c657600080fd5b33600090815260078301602052604090205460ff16156107e557600080fd5b600054604080517f5121220c0000000000000000000000000000000000000000000000000000000081523360048201529051670de0b6b3a764000092600160a060020a031691635121220c916024808301926020929190829003018186803b15801561085057600080fd5b505afa158015610864573d6000803e3d6000fd5b505050506040513d602081101561087a57600080fd5b5051101561088757600080fd5b6000831161089457600080fd5b6001808201939093559290925533600090815260079092016020526040909120805460ff1916909117905550565b6000828201838110156108d457600080fd5b9392505050565b60c060405190810160405280600081526020016000600160a060020a03168152602001600081526020016000815260200160008152602001600081525090565b60806040519081016040528060008019168152602001600081526020016000815260200160008152509056fea165627a7a723058202ae8d0ddd7c60d988f484214aa2525816e323d81d851c9d09a5fcaa8b1a6ac9f0029",
  "deployedBytecode": "0x6080604052600436106100825763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630dca7ed881146100875780631b89ef0f146100c35780632b786571146100ed578063b11d8bb814610102578063bad62d201461013a578063f8a2e5101461016a578063fa07153a146101a3575b600080fd5b34801561009357600080fd5b506100b1600480360360208110156100aa57600080fd5b50356101d9565b60408051918252519081900360200190f35b3480156100cf57600080fd5b506100b1600480360360208110156100e657600080fd5b5035610259565b3480156100f957600080fd5b506100b16102d9565b34801561010e57600080fd5b506101386004803603606081101561012557600080fd5b50803590602081013590604001356102df565b005b34801561014657600080fd5b506100b16004803603604081101561015d57600080fd5b50803590602001356104ea565b34801561017657600080fd5b506100b16004803603604081101561018d57600080fd5b5080359060200135600160a060020a03166106a8565b3480156101af57600080fd5b50610138600480360360608110156101c657600080fd5b5080359060208101359060400135610797565b60006101e36108db565b50600082815260036020818152604092839020835160c081018552815481526001820154600160a060020a03169281019290925260028101549382019390935290820154606082018190526004830154608083015260059092015460a082015290431161024f57600080fd5b6080015192915050565b60006102636108db565b50600082815260036020818152604092839020835160c081018552815481526001820154600160a060020a03169281019290925260028101549382019390935290820154606082018190526004830154608083015260059092015460a08201529043116102cf57600080fd5b60a0015192915050565b60025481565b6000838152600360209081526040808320338452600981019092529091206002820154431161030d57600080fd5b600382015443111561031e57600080fd5b33600090815260078301602052604090205460ff16151561033e57600080fd5b33600090815260088301602052604090205460ff161561035d57600080fd5b6001810154600054604080517f5121220c0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a0390921691635121220c91602480820192602092909190829003018186803b1580156103c657600080fd5b505afa1580156103da573d6000803e3d6000fd5b505050506040513d60208110156103f057600080fd5b505110156103fd57600080fd5b604080516020808201879052818301869052825180830384018152606090920190925280519101208154811461043257600080fd5b60028201849055600382018590553360009081526008840160209081526040808320805460ff1916600190811790915585015488845260068701909252909120546104829163ffffffff6108c216565b6000868152600685016020526040902055600483015485148015906104ba575060058301546000868152600685016020526040902054115b156104c757600483018590555b505060048101546000908152600682016020526040902054600590910155505050565b60008183106104f857600080fd5b600280546000818152600360208190526040918290209283556001808401805473ffffffffffffffffffffffffffffffffffffffff191633179055838501889055908301869055835401835580518381526060818101909252919290919081602001602082028038833950505060018301548151919250600160a060020a0316908290600090811061058657fe5b6020908102909101015281548151829060019081106105a157fe5b6020908102909101810191909152600154604080517f2790240100000000000000000000000000000000000000000000000000000000815260048101918252600b60448201527f506f6c6c437265617465640000000000000000000000000000000000000000006064820152608060248201908152855160848301528551600160a060020a039094169463279024019487949384939260a490910191868201910280838360005b83811015610660578181015183820152602001610648565b505050509050019350505050600060405180830381600087803b15801561068657600080fd5b505af115801561069a573d6000803e3d6000fd5b505092549695505050505050565b60006106b26108db565b50600083815260036020818152604092839020835160c081018552815481526001820154600160a060020a03169281019290925260028101549382019390935290820154606082018190526004830154608083015260059092015460a082015290431161071e57600080fd5b61072661091b565b506000848152600360208181526040808420600160a060020a038816855260090182529283902083516080818101865282548252600183015493820193909352600282015494810194909452909101546060830181905290830151141561078f57806020015192505b505092915050565b60008381526003602090815260408083203384526009810190925290912060028201544311156107c657600080fd5b33600090815260078301602052604090205460ff16156107e557600080fd5b600054604080517f5121220c0000000000000000000000000000000000000000000000000000000081523360048201529051670de0b6b3a764000092600160a060020a031691635121220c916024808301926020929190829003018186803b15801561085057600080fd5b505afa158015610864573d6000803e3d6000fd5b505050506040513d602081101561087a57600080fd5b5051101561088757600080fd5b6000831161089457600080fd5b6001808201939093559290925533600090815260079092016020526040909120805460ff1916909117905550565b6000828201838110156108d457600080fd5b9392505050565b60c060405190810160405280600081526020016000600160a060020a03168152602001600081526020016000815260200160008152602001600081525090565b60806040519081016040528060008019168152602001600081526020016000815260200160008152509056fea165627a7a723058202ae8d0ddd7c60d988f484214aa2525816e323d81d851c9d09a5fcaa8b1a6ac9f0029",
  "sourceMap": "198:5640:13:-;;;340:1;315:26;;1145:171;8:9:-1;5:2;;;30:1;27;20:12;5:2;1145:171:13;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1145:171:13;;;;;;;1224:7;:39;;-1:-1:-1;;;;;1224:39:13;;;-1:-1:-1;;;;;;1224:39:13;;;;;;;:7;1273:36;;;;;;;;;;;198:5640;;;;;;",
  "deployedSourceMap": "198:5640:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5041:200;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5041:200:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5041:200:13;;;;;;;;;;;;;;;;;;;5247:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5247:198:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5247:198:13;;;315:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;315:26:13;;;;3751:1284;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3751:1284:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3751:1284:13;;;;;;;;;;;;;;;1702:764;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1702:764:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1702:764:13;;;;;;;;5451:368;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5451:368:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5451:368:13;;;;;;-1:-1:-1;;;;;5451:368:13;;;2749:729;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2749:729:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2749:729:13;;;;;;;;;;;;;5041:200;5099:4;5115:13;;:::i;:::-;-1:-1:-1;5131:14:13;;;;:5;:14;;;;;;;;;5115:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;5115:30:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5182:12;-1:-1:-1;5155:40:13;;;;;;5212:22;;;;5041:200;-1:-1:-1;;5041:200:13:o;5247:198::-;5310:4;5326:13;;:::i;:::-;-1:-1:-1;5342:14:13;;;;:5;:14;;;;;;;;;5326:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;5326:30:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5393:12;-1:-1:-1;5366:40:13;;;;;;5423:15;;;;5247:198;-1:-1:-1;;5247:198:13:o;315:26::-;;;;:::o;3751:1284::-;3836:14;3853;;;:5;:14;;;;;;;;3902:10;3894:19;;:7;;;:19;;;;;;4094:16;;;;4079:12;:31;4071:40;;;;;;4145:16;;;;4129:12;:32;;4121:41;;;;;;4192:10;4180:23;;;;:11;;;:23;;;;;;;;4172:32;;;;;;;;4235:10;4223:23;;;;:11;;;:23;;;;;;;;4222:24;4214:33;;;;;;4303:17;;;;4265:8;;:34;;;;;;4288:10;4265:34;;;;;;-1:-1:-1;;;;;4265:8:13;;;;:22;;:34;;;;;;;;;;;;;;;:8;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;4265:34:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4265:34:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4265:34:13;:55;;4257:64;;;;;;4414:40;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;4414:40:13;;;;;;;4404:51;;;;;4473:12;;:27;;4465:36;;;;;;4586:6;;;:18;;;4614:12;;;:26;;;4662:10;-1:-1:-1;4650:23:13;;;:11;;;:23;;;;;;;;:30;;-1:-1:-1;;4650:30:13;4676:4;4650:30;;;;;;4748:17;;;4718:25;;;:12;;;:25;;;;;;;:48;;;:29;:48;:::i;:::-;4690:25;;;;:12;;;:25;;;;;:76;4817:22;;;;:37;;;;;:84;;-1:-1:-1;4886:15:13;;;;4858:25;;;;:12;;;:25;;;;;;:43;4817:84;4814:150;;;4917:22;;;:36;;;4814:150;-1:-1:-1;;5005:22:13;;;;4992:36;;;;:12;;;:36;;;;;;4974:15;;;;:54;-1:-1:-1;;;3751:1284:13:o;1702:764::-;1782:4;1840:33;;;1832:42;;;;;;1932:10;;;1909:14;1926:17;;;:5;:17;;;;;;;;;1953;;;1980:9;;;;:22;;-1:-1:-1;;1980:22:13;1992:10;1980:22;;;2012:16;;;:34;;;2056:16;;;:34;;;2136:12;;;;;2220:16;;;;;2196:21;2220:16;;;;;;1926:17;;2196:21;;2220:16;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;;;2269:9:13;;;;2246:7;;;;-1:-1:-1;;;;;;2269:9:13;;2246:7;;2269:9;;2246:7;;;;;;;;;;;;;;:34;2308:4;;2290:7;;:4;;2300:13;;2290:7;;;;;;;;;;;;;;;:23;;;;2370:7;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2370:7:13;;;;:17;;2403:4;;2370:38;;;;;;;;;;;;;;;;;:7;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2370:38:13;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2370:38:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2455:4:13;;;1702:764;-1:-1:-1;;;;;;1702:764:13:o;5451:368::-;5528:11;5551:13;;:::i;:::-;-1:-1:-1;5567:14:13;;;;:5;:14;;;;;;;;;5551:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;5551:30:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5618:12;-1:-1:-1;5591:40:13;;;;;;5641:13;;:::i;:::-;-1:-1:-1;5657:14:13;;;;:5;:14;;;;;;;;-1:-1:-1;;;;;5657:27:13;;;;:20;;:27;;;;;;5641:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5698:22;;;;:38;5695:94;;;5761:1;:17;;;5752:26;;5695:94;-1:-1:-1;;5451:368:13;;;;:::o;2749:729::-;2866:14;2883;;;:5;:14;;;;;;;;2932:10;2924:19;;:7;;;:19;;;;;;3090:16;;;;3074:12;:32;;3066:41;;;;;;3138:10;3126:23;;;;:11;;;:23;;;;;;;;3125:24;3117:33;;;;;;3168:8;;:34;;;;;;3191:10;3168:34;;;;;;3206:7;;-1:-1:-1;;;;;3168:8:13;;:22;;:34;;;;;;;;;;;;;;:8;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;3168:34:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3168:34:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3168:34:13;:45;;3160:54;;;;;;3250:1;3232:19;;3224:28;;;;;;3315:17;;;;:35;;;;3360:20;;;;3453:10;3360:12;3441:23;;;:11;;;;:23;;;;;;:30;;-1:-1:-1;;3441:30:13;;;;;;-1:-1:-1;2749:729:13:o;1431:145:14:-;1489:7;1520:5;;;1543:6;;;;1535:15;;;;;;1568:1;1431:145;-1:-1:-1;;;1431:145:14:o;198:5640:13:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;198:5640:13;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.5.0;\n\nimport \"../treasury/Treasury.sol\";\nimport \"../event/EventEmitter.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\n\n/** @title Voting\n    @author Freydal\n*/\ncontract Voting {\n    using SafeMath for uint;\n\n    Treasury private treasury;\n    EventEmitter private emitter;\n    uint public nextPollId = 1;\n    mapping(uint => Poll) polls;\n\n    struct Poll {\n        uint id;\n        address creator;\n        uint commitEndBlock;\n        uint revealEndBlock;\n        uint currentLeadingOption;\n        uint leadingTokens;\n        mapping(uint => uint) voteValues;\n        mapping(address => bool) didCommit;\n        mapping(address => bool) didReveal;\n        mapping(address => Vote) votes;\n    }\n\n    struct Vote {\n        bytes32 hiddenVote;\n        uint tokensCommitted;\n        uint salt;\n        uint voteOption; //TODO: what do we want Vote to be as far as datat type  bool vs uint;\n    }\n\n    /** @dev Create a new voting engine\n        @notice Create a new voting engine\n        @param treasuryAddress Deployed Treasury address\n        @param _emitterAddress Deployed EventEmitter address\n    */\n    constructor(address treasuryAddress, address _emitterAddress) public {\n        emitter = EventEmitter(_emitterAddress);\n        treasury = Treasury(treasuryAddress);\n    }\n\n    /** @dev Create a new poll to accept votes based on the configuration\n        @notice Create a new poll to accept votes based on the configuration\n        @param _commitEndBlock Block number when commit phase ends\n        @param _revealEndBlock Block number when reveal phase ends\n        @return Poll index number. Will be used as the key for interacting with a vote.\n    */\n    function createPoll(uint _commitEndBlock, uint _revealEndBlock) public returns (uint) {\n        //Reveal end after commit\n        require(_commitEndBlock < _revealEndBlock);\n\n        //Set poll data\n        Poll storage p = polls[nextPollId];\n        p.id = nextPollId;\n        p.creator = msg.sender;\n        p.commitEndBlock = _commitEndBlock;\n        p.revealEndBlock = _revealEndBlock;\n\n        //Increase next poll index\n        nextPollId++;\n\n        //Format data and emit event\n        bytes32[] memory data = new bytes32[](2);\n        data[0] = bytes32(uint(p.creator));\n        data[1] = bytes32(p.id);\n        //TODO: emit commit end and reveal end\n        emitter.emitEvent('PollCreated', data);\n\n        //Return the poll id\n        return p.id;\n    }\n\n    /** @dev Commit a vote in a poll to be later revealed\n        @notice Commit a vote in a poll to be later revealed\n        @param _pollId Poll index to act upon\n        @param _vote Hash encoded vote\n        @param _tokensToCommit Number of tokens to commit to vote\n    */\n    function commitVote(uint _pollId, bytes32 _vote, uint _tokensToCommit) public {\n        //load Poll and Vote\n        Poll storage p = polls[_pollId];\n        Vote storage v = p.votes[msg.sender];\n\n        //Ensure commit phase hasn't ended, the user has not committed and has adequate balance in the treasury\n        require(block.number <= p.commitEndBlock);\n        require(!p.didCommit[msg.sender]);\n        require(treasury.systemBalance(msg.sender) >= 1 ether);\n        require(_tokensToCommit > 0);\n\n        //Set the tokens committed hidden vote data\n        v.tokensCommitted = _tokensToCommit;\n        v.hiddenVote = _vote;\n\n        //Track voter address and set did commit.\n        p.didCommit[msg.sender] = true;\n    }\n\n    /** @dev Reveal a previously committed vote\n        @notice Reveal a previously committed vote\n        @param _pollId Poll index to act upon\n        @param _voteOption User vote option\n        @param _voteSalt Salt used to in hash to obfuscate vote option\n    */\n    function revealVote(uint _pollId, uint _voteOption, uint _voteSalt) public {\n        Poll storage p = polls[_pollId];\n        Vote storage v = p.votes[msg.sender];\n\n        // Ensure commit phase has passed,  reveal phase has not.  User has commited but not revealed.  User has adequate balance in the treasury.\n        require(block.number > p.commitEndBlock);\n        require(block.number <= p.revealEndBlock);\n        require(p.didCommit[msg.sender]);\n        require(!p.didReveal[msg.sender]);\n        require(treasury.systemBalance(msg.sender) >= v.tokensCommitted);\n\n        //Calculate and compare the commited vote\n        bytes32 exposedVote = keccak256(abi.encodePacked(_voteOption, _voteSalt));\n        require(v.hiddenVote == exposedVote);\n\n        //Store info from a valid revealed vote. Remove the pending vote.\n        v.salt = _voteSalt;\n        v.voteOption = _voteOption;\n        p.didReveal[msg.sender] = true;\n        p.voteValues[_voteOption] = p.voteValues[_voteOption].add(v.tokensCommitted);\n\n        //Update winner and tracking\n        if(p.currentLeadingOption != _voteOption && p.voteValues[_voteOption] > p.leadingTokens) {\n            p.currentLeadingOption = _voteOption;\n        }\n\n        p.leadingTokens = p.voteValues[p.currentLeadingOption];\n    }\n\n    function winningOption(uint _pollId) public view returns (uint) {\n        Poll memory p = polls[_pollId];\n        require(p.revealEndBlock < block.number);\n        return p.currentLeadingOption;\n    }\n\n    function totalWinningTokens(uint _pollId) public view returns (uint) {\n        Poll memory p = polls[_pollId];\n        require(p.revealEndBlock < block.number);\n        return p.leadingTokens;\n    }\n\n    function userWinningTokens(uint _pollId, address _user) public view returns (uint tokens) {\n        Poll memory p = polls[_pollId];\n        require(p.revealEndBlock < block.number);\n        Vote memory v = polls[_pollId].votes[_user];\n\n        if(p.currentLeadingOption == v.voteOption) {\n            tokens = v.tokensCommitted;\n        }\n\n        return tokens;\n    }\n\n    //INTERNAL\n\n}\n",
  "sourcePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/voting/Voting.sol",
  "ast": {
    "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/voting/Voting.sol",
    "exportedSymbols": {
      "Voting": [
        3776
      ]
    },
    "id": 3777,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3284,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:13"
      },
      {
        "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/treasury/Treasury.sol",
        "file": "../treasury/Treasury.sol",
        "id": 3285,
        "nodeType": "ImportDirective",
        "scope": 3777,
        "sourceUnit": 1562,
        "src": "25:34:13",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/event/EventEmitter.sol",
        "file": "../event/EventEmitter.sol",
        "id": 3286,
        "nodeType": "ImportDirective",
        "scope": 3777,
        "sourceUnit": 141,
        "src": "60:35:13",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 3287,
        "nodeType": "ImportDirective",
        "scope": 3777,
        "sourceUnit": 3905,
        "src": "96:59:13",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@title Voting\n@author Freydal",
        "fullyImplemented": true,
        "id": 3776,
        "linearizedBaseContracts": [
          3776
        ],
        "name": "Voting",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 3290,
            "libraryName": {
              "contractScope": null,
              "id": 3288,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3904,
              "src": "226:8:13",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$3904",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "220:24:13",
            "typeName": {
              "id": 3289,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "239:4:13",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 3292,
            "name": "treasury",
            "nodeType": "VariableDeclaration",
            "scope": 3776,
            "src": "250:25:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Treasury_$1561",
              "typeString": "contract Treasury"
            },
            "typeName": {
              "contractScope": null,
              "id": 3291,
              "name": "Treasury",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1561,
              "src": "250:8:13",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Treasury_$1561",
                "typeString": "contract Treasury"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 3294,
            "name": "emitter",
            "nodeType": "VariableDeclaration",
            "scope": 3776,
            "src": "281:28:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_EventEmitter_$140",
              "typeString": "contract EventEmitter"
            },
            "typeName": {
              "contractScope": null,
              "id": 3293,
              "name": "EventEmitter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 140,
              "src": "281:12:13",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EventEmitter_$140",
                "typeString": "contract EventEmitter"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 3297,
            "name": "nextPollId",
            "nodeType": "VariableDeclaration",
            "scope": 3776,
            "src": "315:26:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3295,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "315:4:13",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 3296,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "340:1:13",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3301,
            "name": "polls",
            "nodeType": "VariableDeclaration",
            "scope": 3776,
            "src": "347:27:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
              "typeString": "mapping(uint256 => struct Voting.Poll)"
            },
            "typeName": {
              "id": 3300,
              "keyType": {
                "id": 3298,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "355:4:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "347:21:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
                "typeString": "mapping(uint256 => struct Voting.Poll)"
              },
              "valueType": {
                "contractScope": null,
                "id": 3299,
                "name": "Poll",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 3330,
                "src": "363:4:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                  "typeString": "struct Voting.Poll"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "canonicalName": "Voting.Poll",
            "id": 3330,
            "members": [
              {
                "constant": false,
                "id": 3303,
                "name": "id",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "403:7:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3302,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "403:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3305,
                "name": "creator",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "420:15:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 3304,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "420:7:13",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3307,
                "name": "commitEndBlock",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "445:19:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3306,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "445:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3309,
                "name": "revealEndBlock",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "474:19:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3308,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "474:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3311,
                "name": "currentLeadingOption",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "503:25:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3310,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "503:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3313,
                "name": "leadingTokens",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "538:18:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3312,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "538:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3317,
                "name": "voteValues",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "566:32:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 3316,
                  "keyType": {
                    "id": 3314,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "574:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "566:21:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 3315,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "582:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3321,
                "name": "didCommit",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "608:34:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "typeName": {
                  "id": 3320,
                  "keyType": {
                    "id": 3318,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "616:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "608:24:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "valueType": {
                    "id": 3319,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "627:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3325,
                "name": "didReveal",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "652:34:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "typeName": {
                  "id": 3324,
                  "keyType": {
                    "id": 3322,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "660:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "652:24:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "valueType": {
                    "id": 3323,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "671:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3329,
                "name": "votes",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "696:30:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Vote_$3339_storage_$",
                  "typeString": "mapping(address => struct Voting.Vote)"
                },
                "typeName": {
                  "id": 3328,
                  "keyType": {
                    "id": 3326,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "704:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "696:24:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Vote_$3339_storage_$",
                    "typeString": "mapping(address => struct Voting.Vote)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 3327,
                    "name": "Vote",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3339,
                    "src": "715:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                      "typeString": "struct Voting.Vote"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Poll",
            "nodeType": "StructDefinition",
            "scope": 3776,
            "src": "381:352:13",
            "visibility": "public"
          },
          {
            "canonicalName": "Voting.Vote",
            "id": 3339,
            "members": [
              {
                "constant": false,
                "id": 3332,
                "name": "hiddenVote",
                "nodeType": "VariableDeclaration",
                "scope": 3339,
                "src": "761:18:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 3331,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "761:7:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3334,
                "name": "tokensCommitted",
                "nodeType": "VariableDeclaration",
                "scope": 3339,
                "src": "789:20:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3333,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "789:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3336,
                "name": "salt",
                "nodeType": "VariableDeclaration",
                "scope": 3339,
                "src": "819:9:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3335,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "819:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3338,
                "name": "voteOption",
                "nodeType": "VariableDeclaration",
                "scope": 3339,
                "src": "838:15:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3337,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "838:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Vote",
            "nodeType": "StructDefinition",
            "scope": 3776,
            "src": "739:192:13",
            "visibility": "public"
          },
          {
            "body": {
              "id": 3358,
              "nodeType": "Block",
              "src": "1214:102:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3346,
                      "name": "emitter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3294,
                      "src": "1224:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventEmitter_$140",
                        "typeString": "contract EventEmitter"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3348,
                          "name": "_emitterAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3343,
                          "src": "1247:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3347,
                        "name": "EventEmitter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 140,
                        "src": "1234:12:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_EventEmitter_$140_$",
                          "typeString": "type(contract EventEmitter)"
                        }
                      },
                      "id": 3349,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1234:29:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventEmitter_$140",
                        "typeString": "contract EventEmitter"
                      }
                    },
                    "src": "1224:39:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EventEmitter_$140",
                      "typeString": "contract EventEmitter"
                    }
                  },
                  "id": 3351,
                  "nodeType": "ExpressionStatement",
                  "src": "1224:39:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3352,
                      "name": "treasury",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3292,
                      "src": "1273:8:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Treasury_$1561",
                        "typeString": "contract Treasury"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3354,
                          "name": "treasuryAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3341,
                          "src": "1293:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3353,
                        "name": "Treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1561,
                        "src": "1284:8:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Treasury_$1561_$",
                          "typeString": "type(contract Treasury)"
                        }
                      },
                      "id": 3355,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1284:25:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Treasury_$1561",
                        "typeString": "contract Treasury"
                      }
                    },
                    "src": "1273:36:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Treasury_$1561",
                      "typeString": "contract Treasury"
                    }
                  },
                  "id": 3357,
                  "nodeType": "ExpressionStatement",
                  "src": "1273:36:13"
                }
              ]
            },
            "documentation": "@dev Create a new voting engine\n@notice Create a new voting engine\n@param treasuryAddress Deployed Treasury address\n@param _emitterAddress Deployed EventEmitter address",
            "id": 3359,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3344,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3341,
                  "name": "treasuryAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3359,
                  "src": "1157:23:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3340,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1157:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3343,
                  "name": "_emitterAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3359,
                  "src": "1182:23:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3342,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1182:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1156:50:13"
            },
            "returnParameters": {
              "id": 3345,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1214:0:13"
            },
            "scope": 3776,
            "src": "1145:171:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3448,
              "nodeType": "Block",
              "src": "1788:678:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3369,
                          "name": "_commitEndBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3361,
                          "src": "1840:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3370,
                          "name": "_revealEndBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3363,
                          "src": "1858:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1840:33:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3368,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "1832:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3372,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1832:42:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3373,
                  "nodeType": "ExpressionStatement",
                  "src": "1832:42:13"
                },
                {
                  "assignments": [
                    3375
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3375,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 3448,
                      "src": "1909:14:13",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                        "typeString": "struct Voting.Poll"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3374,
                        "name": "Poll",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3330,
                        "src": "1909:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3379,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3376,
                      "name": "polls",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3301,
                      "src": "1926:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Poll storage ref)"
                      }
                    },
                    "id": 3378,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3377,
                      "name": "nextPollId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3297,
                      "src": "1932:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1926:17:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Poll_$3330_storage",
                      "typeString": "struct Voting.Poll storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1909:34:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3384,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3380,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3375,
                        "src": "1953:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll storage pointer"
                        }
                      },
                      "id": 3382,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "id",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3303,
                      "src": "1953:4:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3383,
                      "name": "nextPollId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3297,
                      "src": "1960:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1953:17:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3385,
                  "nodeType": "ExpressionStatement",
                  "src": "1953:17:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3386,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3375,
                        "src": "1980:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll storage pointer"
                        }
                      },
                      "id": 3388,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "creator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3305,
                      "src": "1980:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3389,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4569,
                        "src": "1992:3:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 3390,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1992:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1980:22:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3392,
                  "nodeType": "ExpressionStatement",
                  "src": "1980:22:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3393,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3375,
                        "src": "2012:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll storage pointer"
                        }
                      },
                      "id": 3395,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "commitEndBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3307,
                      "src": "2012:16:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3396,
                      "name": "_commitEndBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3361,
                      "src": "2031:15:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2012:34:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3398,
                  "nodeType": "ExpressionStatement",
                  "src": "2012:34:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3399,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3375,
                        "src": "2056:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll storage pointer"
                        }
                      },
                      "id": 3401,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "revealEndBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3309,
                      "src": "2056:16:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3402,
                      "name": "_revealEndBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3363,
                      "src": "2075:15:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2056:34:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3404,
                  "nodeType": "ExpressionStatement",
                  "src": "2056:34:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3406,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "2136:12:13",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 3405,
                      "name": "nextPollId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3297,
                      "src": "2136:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3407,
                  "nodeType": "ExpressionStatement",
                  "src": "2136:12:13"
                },
                {
                  "assignments": [
                    3411
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3411,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 3448,
                      "src": "2196:21:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3409,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2196:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3410,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2196:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3417,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 3415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2234:1:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "id": 3414,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2220:13:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3412,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2224:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3413,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2224:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 3416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2220:16:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2196:40:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3427,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3418,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3411,
                        "src": "2246:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3420,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3419,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2251:1:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2246:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3423,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3375,
                                "src": "2269:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                                  "typeString": "struct Voting.Poll storage pointer"
                                }
                              },
                              "id": 3424,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "creator",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3305,
                              "src": "2269:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2264:4:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 3425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2264:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3421,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2256:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3426,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2256:24:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2246:34:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3428,
                  "nodeType": "ExpressionStatement",
                  "src": "2246:34:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3436,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3429,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3411,
                        "src": "2290:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3431,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3430,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2295:1:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2290:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3433,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3375,
                            "src": "2308:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                              "typeString": "struct Voting.Poll storage pointer"
                            }
                          },
                          "id": 3434,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "id",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3303,
                          "src": "2308:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3432,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2300:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3435,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2300:13:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2290:23:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3437,
                  "nodeType": "ExpressionStatement",
                  "src": "2290:23:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "506f6c6c43726561746564",
                        "id": 3441,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2388:13:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_581d88d62f3ac1cdd2f236867565d624dc442e707249addbe21e6fdccc0b270f",
                          "typeString": "literal_string \"PollCreated\""
                        },
                        "value": "PollCreated"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3442,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3411,
                        "src": "2403:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_581d88d62f3ac1cdd2f236867565d624dc442e707249addbe21e6fdccc0b270f",
                          "typeString": "literal_string \"PollCreated\""
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3438,
                        "name": "emitter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3294,
                        "src": "2370:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventEmitter_$140",
                          "typeString": "contract EventEmitter"
                        }
                      },
                      "id": 3440,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "emitEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 139,
                      "src": "2370:17:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,bytes32[] memory) external"
                      }
                    },
                    "id": 3443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2370:38:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3444,
                  "nodeType": "ExpressionStatement",
                  "src": "2370:38:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3445,
                      "name": "p",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3375,
                      "src": "2455:1:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                        "typeString": "struct Voting.Poll storage pointer"
                      }
                    },
                    "id": 3446,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "id",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3303,
                    "src": "2455:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3367,
                  "id": 3447,
                  "nodeType": "Return",
                  "src": "2448:11:13"
                }
              ]
            },
            "documentation": "@dev Create a new poll to accept votes based on the configuration\n@notice Create a new poll to accept votes based on the configuration\n@param _commitEndBlock Block number when commit phase ends\n@param _revealEndBlock Block number when reveal phase ends\n@return Poll index number. Will be used as the key for interacting with a vote.",
            "id": 3449,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createPoll",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3361,
                  "name": "_commitEndBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 3449,
                  "src": "1722:20:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3360,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1722:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3363,
                  "name": "_revealEndBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 3449,
                  "src": "1744:20:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3362,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1744:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1721:44:13"
            },
            "returnParameters": {
              "id": 3367,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3366,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3449,
                  "src": "1782:4:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3365,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1782:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1781:6:13"
            },
            "scope": 3776,
            "src": "1702:764:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3526,
              "nodeType": "Block",
              "src": "2827:651:13",
              "statements": [
                {
                  "assignments": [
                    3459
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3459,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 3526,
                      "src": "2866:14:13",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                        "typeString": "struct Voting.Poll"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3458,
                        "name": "Poll",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3330,
                        "src": "2866:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3463,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3460,
                      "name": "polls",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3301,
                      "src": "2883:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Poll storage ref)"
                      }
                    },
                    "id": 3462,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3461,
                      "name": "_pollId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3451,
                      "src": "2889:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2883:14:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Poll_$3330_storage",
                      "typeString": "struct Voting.Poll storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2866:31:13"
                },
                {
                  "assignments": [
                    3465
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3465,
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 3526,
                      "src": "2907:14:13",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3464,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3339,
                        "src": "2907:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3471,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3466,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3459,
                        "src": "2924:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll storage pointer"
                        }
                      },
                      "id": 3467,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "votes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3329,
                      "src": "2924:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Vote_$3339_storage_$",
                        "typeString": "mapping(address => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 3470,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3468,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4569,
                        "src": "2932:3:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 3469,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2932:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2924:19:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$3339_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2907:36:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3477,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3473,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "3074:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3074:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3475,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3459,
                            "src": "3090:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                              "typeString": "struct Voting.Poll storage pointer"
                            }
                          },
                          "id": 3476,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "commitEndBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3307,
                          "src": "3090:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3074:32:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3472,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "3066:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3478,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3066:41:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3479,
                  "nodeType": "ExpressionStatement",
                  "src": "3066:41:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3486,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3125:24:13",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3481,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3459,
                              "src": "3126:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                                "typeString": "struct Voting.Poll storage pointer"
                              }
                            },
                            "id": 3482,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "didCommit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3321,
                            "src": "3126:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 3485,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3483,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4569,
                              "src": "3138:3:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3484,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3138:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3126:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3480,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "3117:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3117:33:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3488,
                  "nodeType": "ExpressionStatement",
                  "src": "3117:33:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3492,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4569,
                                "src": "3191:3:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3191:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3490,
                              "name": "treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3292,
                              "src": "3168:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Treasury_$1561",
                                "typeString": "contract Treasury"
                              }
                            },
                            "id": 3491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "systemBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1413,
                            "src": "3168:22:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 3494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3168:34:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 3495,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3206:7:13",
                          "subdenomination": "ether",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000"
                          },
                          "value": "1"
                        },
                        "src": "3168:45:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3489,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "3160:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3160:54:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3498,
                  "nodeType": "ExpressionStatement",
                  "src": "3160:54:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3500,
                          "name": "_tokensToCommit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3455,
                          "src": "3232:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3250:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3232:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3499,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "3224:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3503,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3224:28:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3504,
                  "nodeType": "ExpressionStatement",
                  "src": "3224:28:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3505,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3465,
                        "src": "3315:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3507,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "tokensCommitted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3334,
                      "src": "3315:17:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3508,
                      "name": "_tokensToCommit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3455,
                      "src": "3335:15:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3315:35:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3510,
                  "nodeType": "ExpressionStatement",
                  "src": "3315:35:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3515,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3511,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3465,
                        "src": "3360:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3513,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "hiddenVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3332,
                      "src": "3360:12:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3514,
                      "name": "_vote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3453,
                      "src": "3375:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3360:20:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3516,
                  "nodeType": "ExpressionStatement",
                  "src": "3360:20:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3517,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3459,
                          "src": "3441:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                            "typeString": "struct Voting.Poll storage pointer"
                          }
                        },
                        "id": 3521,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "didCommit",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3321,
                        "src": "3441:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 3522,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3519,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4569,
                          "src": "3453:3:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3453:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3441:23:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 3523,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3467:4:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3441:30:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3525,
                  "nodeType": "ExpressionStatement",
                  "src": "3441:30:13"
                }
              ]
            },
            "documentation": "@dev Commit a vote in a poll to be later revealed\n@notice Commit a vote in a poll to be later revealed\n@param _pollId Poll index to act upon\n@param _vote Hash encoded vote\n@param _tokensToCommit Number of tokens to commit to vote",
            "id": 3527,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "commitVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3456,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3451,
                  "name": "_pollId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3527,
                  "src": "2769:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3450,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2769:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3453,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 3527,
                  "src": "2783:13:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3452,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2783:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3455,
                  "name": "_tokensToCommit",
                  "nodeType": "VariableDeclaration",
                  "scope": 3527,
                  "src": "2798:20:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3454,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2798:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2768:51:13"
            },
            "returnParameters": {
              "id": 3457,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2827:0:13"
            },
            "scope": 3776,
            "src": "2749:729:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3677,
              "nodeType": "Block",
              "src": "3826:1209:13",
              "statements": [
                {
                  "assignments": [
                    3537
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3537,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 3677,
                      "src": "3836:14:13",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                        "typeString": "struct Voting.Poll"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3536,
                        "name": "Poll",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3330,
                        "src": "3836:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3541,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3538,
                      "name": "polls",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3301,
                      "src": "3853:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Poll storage ref)"
                      }
                    },
                    "id": 3540,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3539,
                      "name": "_pollId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3529,
                      "src": "3859:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3853:14:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Poll_$3330_storage",
                      "typeString": "struct Voting.Poll storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3836:31:13"
                },
                {
                  "assignments": [
                    3543
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3543,
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 3677,
                      "src": "3877:14:13",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3542,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3339,
                        "src": "3877:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3549,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3544,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3537,
                        "src": "3894:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll storage pointer"
                        }
                      },
                      "id": 3545,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "votes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3329,
                      "src": "3894:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Vote_$3339_storage_$",
                        "typeString": "mapping(address => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 3548,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3546,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4569,
                        "src": "3902:3:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 3547,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3902:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3894:19:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$3339_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3877:36:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3555,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3551,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "4079:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4079:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3553,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3537,
                            "src": "4094:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                              "typeString": "struct Voting.Poll storage pointer"
                            }
                          },
                          "id": 3554,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "commitEndBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3307,
                          "src": "4094:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4079:31:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3550,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "4071:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4071:40:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3557,
                  "nodeType": "ExpressionStatement",
                  "src": "4071:40:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3563,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3559,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "4129:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4129:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3561,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3537,
                            "src": "4145:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                              "typeString": "struct Voting.Poll storage pointer"
                            }
                          },
                          "id": 3562,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "revealEndBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3309,
                          "src": "4145:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4129:32:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3558,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "4121:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4121:41:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3565,
                  "nodeType": "ExpressionStatement",
                  "src": "4121:41:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3567,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3537,
                            "src": "4180:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                              "typeString": "struct Voting.Poll storage pointer"
                            }
                          },
                          "id": 3568,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "didCommit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3321,
                          "src": "4180:11:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 3571,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3569,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4569,
                            "src": "4192:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4192:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4180:23:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3566,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "4172:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4172:32:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3573,
                  "nodeType": "ExpressionStatement",
                  "src": "4172:32:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3580,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "4222:24:13",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3575,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3537,
                              "src": "4223:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                                "typeString": "struct Voting.Poll storage pointer"
                              }
                            },
                            "id": 3576,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "didReveal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3325,
                            "src": "4223:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 3579,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3577,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4569,
                              "src": "4235:3:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3578,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4235:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4223:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3574,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "4214:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3581,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4214:33:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3582,
                  "nodeType": "ExpressionStatement",
                  "src": "4214:33:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3586,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4569,
                                "src": "4288:3:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4288:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3584,
                              "name": "treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3292,
                              "src": "4265:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Treasury_$1561",
                                "typeString": "contract Treasury"
                              }
                            },
                            "id": 3585,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "systemBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1413,
                            "src": "4265:22:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 3588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4265:34:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3589,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3543,
                            "src": "4303:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 3590,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tokensCommitted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3334,
                          "src": "4303:17:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4265:55:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3583,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "4257:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3592,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4257:64:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3593,
                  "nodeType": "ExpressionStatement",
                  "src": "4257:64:13"
                },
                {
                  "assignments": [
                    3595
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3595,
                      "name": "exposedVote",
                      "nodeType": "VariableDeclaration",
                      "scope": 3677,
                      "src": "4382:19:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3594,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4382:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3603,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3599,
                            "name": "_voteOption",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3531,
                            "src": "4431:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3600,
                            "name": "_voteSalt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3533,
                            "src": "4444:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3597,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4556,
                            "src": "4414:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 3598,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4414:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 3601,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4414:40:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 3596,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4563,
                      "src": "4404:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 3602,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4404:51:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4382:73:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3608,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3605,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3543,
                            "src": "4473:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 3606,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "hiddenVote",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3332,
                          "src": "4473:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3607,
                          "name": "exposedVote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3595,
                          "src": "4489:11:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "4473:27:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3604,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "4465:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3609,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4465:36:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3610,
                  "nodeType": "ExpressionStatement",
                  "src": "4465:36:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3615,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3611,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3543,
                        "src": "4586:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3613,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "salt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3336,
                      "src": "4586:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3614,
                      "name": "_voteSalt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3533,
                      "src": "4595:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4586:18:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3616,
                  "nodeType": "ExpressionStatement",
                  "src": "4586:18:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3617,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3543,
                        "src": "4614:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3619,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "voteOption",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3338,
                      "src": "4614:12:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3620,
                      "name": "_voteOption",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3531,
                      "src": "4629:11:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4614:26:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3622,
                  "nodeType": "ExpressionStatement",
                  "src": "4614:26:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3623,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3537,
                          "src": "4650:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                            "typeString": "struct Voting.Poll storage pointer"
                          }
                        },
                        "id": 3627,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "didReveal",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3325,
                        "src": "4650:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 3628,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3625,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4569,
                          "src": "4662:3:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4662:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4650:23:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 3629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4676:4:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "4650:30:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3631,
                  "nodeType": "ExpressionStatement",
                  "src": "4650:30:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3645,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3632,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3537,
                          "src": "4690:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                            "typeString": "struct Voting.Poll storage pointer"
                          }
                        },
                        "id": 3635,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voteValues",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3317,
                        "src": "4690:12:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 3636,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3634,
                        "name": "_voteOption",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3531,
                        "src": "4703:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4690:25:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3642,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3543,
                            "src": "4748:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 3643,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tokensCommitted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3334,
                          "src": "4748:17:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3637,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3537,
                              "src": "4718:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                                "typeString": "struct Voting.Poll storage pointer"
                              }
                            },
                            "id": 3638,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "voteValues",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3317,
                            "src": "4718:12:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 3640,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3639,
                            "name": "_voteOption",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3531,
                            "src": "4731:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4718:25:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3641,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3883,
                        "src": "4718:29:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 3644,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4718:48:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4690:76:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3646,
                  "nodeType": "ExpressionStatement",
                  "src": "4690:76:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3647,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3537,
                          "src": "4817:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                            "typeString": "struct Voting.Poll storage pointer"
                          }
                        },
                        "id": 3648,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "currentLeadingOption",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3311,
                        "src": "4817:22:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 3649,
                        "name": "_voteOption",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3531,
                        "src": "4843:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4817:37:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3657,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3651,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3537,
                            "src": "4858:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                              "typeString": "struct Voting.Poll storage pointer"
                            }
                          },
                          "id": 3652,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "voteValues",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3317,
                          "src": "4858:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                            "typeString": "mapping(uint256 => uint256)"
                          }
                        },
                        "id": 3654,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3653,
                          "name": "_voteOption",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3531,
                          "src": "4871:11:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4858:25:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3655,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3537,
                          "src": "4886:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                            "typeString": "struct Voting.Poll storage pointer"
                          }
                        },
                        "id": 3656,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "leadingTokens",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3313,
                        "src": "4886:15:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4858:43:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4817:84:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3666,
                  "nodeType": "IfStatement",
                  "src": "4814:150:13",
                  "trueBody": {
                    "id": 3665,
                    "nodeType": "Block",
                    "src": "4903:61:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3659,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3537,
                              "src": "4917:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                                "typeString": "struct Voting.Poll storage pointer"
                              }
                            },
                            "id": 3661,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currentLeadingOption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3311,
                            "src": "4917:22:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3662,
                            "name": "_voteOption",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3531,
                            "src": "4942:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4917:36:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3664,
                        "nodeType": "ExpressionStatement",
                        "src": "4917:36:13"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3667,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3537,
                        "src": "4974:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll storage pointer"
                        }
                      },
                      "id": 3669,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "leadingTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3313,
                      "src": "4974:15:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3670,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3537,
                          "src": "4992:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                            "typeString": "struct Voting.Poll storage pointer"
                          }
                        },
                        "id": 3671,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voteValues",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3317,
                        "src": "4992:12:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 3674,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3672,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3537,
                          "src": "5005:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                            "typeString": "struct Voting.Poll storage pointer"
                          }
                        },
                        "id": 3673,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "currentLeadingOption",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3311,
                        "src": "5005:22:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4992:36:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4974:54:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3676,
                  "nodeType": "ExpressionStatement",
                  "src": "4974:54:13"
                }
              ]
            },
            "documentation": "@dev Reveal a previously committed vote\n@notice Reveal a previously committed vote\n@param _pollId Poll index to act upon\n@param _voteOption User vote option\n@param _voteSalt Salt used to in hash to obfuscate vote option",
            "id": 3678,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "revealVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3529,
                  "name": "_pollId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3678,
                  "src": "3771:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3528,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3771:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3531,
                  "name": "_voteOption",
                  "nodeType": "VariableDeclaration",
                  "scope": 3678,
                  "src": "3785:16:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3530,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3785:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3533,
                  "name": "_voteSalt",
                  "nodeType": "VariableDeclaration",
                  "scope": 3678,
                  "src": "3803:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3532,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3803:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3770:48:13"
            },
            "returnParameters": {
              "id": 3535,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3826:0:13"
            },
            "scope": 3776,
            "src": "3751:1284:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3702,
              "nodeType": "Block",
              "src": "5105:136:13",
              "statements": [
                {
                  "assignments": [
                    3686
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3686,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 3702,
                      "src": "5115:13:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                        "typeString": "struct Voting.Poll"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3685,
                        "name": "Poll",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3330,
                        "src": "5115:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3690,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3687,
                      "name": "polls",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3301,
                      "src": "5131:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Poll storage ref)"
                      }
                    },
                    "id": 3689,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3688,
                      "name": "_pollId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3680,
                      "src": "5137:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5131:14:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Poll_$3330_storage",
                      "typeString": "struct Voting.Poll storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5115:30:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3696,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3692,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3686,
                            "src": "5163:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                              "typeString": "struct Voting.Poll memory"
                            }
                          },
                          "id": 3693,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "revealEndBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3309,
                          "src": "5163:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3694,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "5182:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5182:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5163:31:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3691,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "5155:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3697,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5155:40:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3698,
                  "nodeType": "ExpressionStatement",
                  "src": "5155:40:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3699,
                      "name": "p",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3686,
                      "src": "5212:1:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                        "typeString": "struct Voting.Poll memory"
                      }
                    },
                    "id": 3700,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "currentLeadingOption",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3311,
                    "src": "5212:22:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3684,
                  "id": 3701,
                  "nodeType": "Return",
                  "src": "5205:29:13"
                }
              ]
            },
            "documentation": null,
            "id": 3703,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "winningOption",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3681,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3680,
                  "name": "_pollId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3703,
                  "src": "5064:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3679,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5064:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5063:14:13"
            },
            "returnParameters": {
              "id": 3684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3683,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3703,
                  "src": "5099:4:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3682,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5099:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5098:6:13"
            },
            "scope": 3776,
            "src": "5041:200:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3727,
              "nodeType": "Block",
              "src": "5316:129:13",
              "statements": [
                {
                  "assignments": [
                    3711
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3711,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 3727,
                      "src": "5326:13:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                        "typeString": "struct Voting.Poll"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3710,
                        "name": "Poll",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3330,
                        "src": "5326:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3715,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3712,
                      "name": "polls",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3301,
                      "src": "5342:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Poll storage ref)"
                      }
                    },
                    "id": 3714,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3713,
                      "name": "_pollId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3705,
                      "src": "5348:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5342:14:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Poll_$3330_storage",
                      "typeString": "struct Voting.Poll storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5326:30:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3717,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3711,
                            "src": "5374:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                              "typeString": "struct Voting.Poll memory"
                            }
                          },
                          "id": 3718,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "revealEndBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3309,
                          "src": "5374:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3719,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "5393:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5393:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5374:31:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3716,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "5366:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3722,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5366:40:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3723,
                  "nodeType": "ExpressionStatement",
                  "src": "5366:40:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3724,
                      "name": "p",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3711,
                      "src": "5423:1:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                        "typeString": "struct Voting.Poll memory"
                      }
                    },
                    "id": 3725,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "leadingTokens",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3313,
                    "src": "5423:15:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3709,
                  "id": 3726,
                  "nodeType": "Return",
                  "src": "5416:22:13"
                }
              ]
            },
            "documentation": null,
            "id": 3728,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "totalWinningTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3706,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3705,
                  "name": "_pollId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3728,
                  "src": "5275:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3704,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5275:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5274:14:13"
            },
            "returnParameters": {
              "id": 3709,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3708,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3728,
                  "src": "5310:4:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3707,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5310:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5309:6:13"
            },
            "scope": 3776,
            "src": "5247:198:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3774,
              "nodeType": "Block",
              "src": "5541:278:13",
              "statements": [
                {
                  "assignments": [
                    3738
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3738,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 3774,
                      "src": "5551:13:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                        "typeString": "struct Voting.Poll"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3737,
                        "name": "Poll",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3330,
                        "src": "5551:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3742,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3739,
                      "name": "polls",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3301,
                      "src": "5567:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Poll storage ref)"
                      }
                    },
                    "id": 3741,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3740,
                      "name": "_pollId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3730,
                      "src": "5573:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5567:14:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Poll_$3330_storage",
                      "typeString": "struct Voting.Poll storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5551:30:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3748,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3744,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3738,
                            "src": "5599:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                              "typeString": "struct Voting.Poll memory"
                            }
                          },
                          "id": 3745,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "revealEndBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3309,
                          "src": "5599:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3746,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "5618:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5618:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5599:31:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3743,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "5591:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3749,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5591:40:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3750,
                  "nodeType": "ExpressionStatement",
                  "src": "5591:40:13"
                },
                {
                  "assignments": [
                    3752
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3752,
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 3774,
                      "src": "5641:13:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$3339_memory_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3751,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3339,
                        "src": "5641:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3759,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3753,
                          "name": "polls",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3301,
                          "src": "5657:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
                            "typeString": "mapping(uint256 => struct Voting.Poll storage ref)"
                          }
                        },
                        "id": 3755,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3754,
                          "name": "_pollId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3730,
                          "src": "5663:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5657:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage",
                          "typeString": "struct Voting.Poll storage ref"
                        }
                      },
                      "id": 3756,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "votes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3329,
                      "src": "5657:20:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Vote_$3339_storage_$",
                        "typeString": "mapping(address => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 3758,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3757,
                      "name": "_user",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3732,
                      "src": "5678:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5657:27:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$3339_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5641:43:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3764,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3760,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3738,
                        "src": "5698:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                          "typeString": "struct Voting.Poll memory"
                        }
                      },
                      "id": 3761,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "currentLeadingOption",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3311,
                      "src": "5698:22:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3762,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3752,
                        "src": "5724:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$3339_memory_ptr",
                          "typeString": "struct Voting.Vote memory"
                        }
                      },
                      "id": 3763,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voteOption",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3338,
                      "src": "5724:12:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5698:38:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3771,
                  "nodeType": "IfStatement",
                  "src": "5695:94:13",
                  "trueBody": {
                    "id": 3770,
                    "nodeType": "Block",
                    "src": "5738:51:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3765,
                            "name": "tokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3735,
                            "src": "5752:6:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3766,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3752,
                              "src": "5761:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$3339_memory_ptr",
                                "typeString": "struct Voting.Vote memory"
                              }
                            },
                            "id": 3767,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tokensCommitted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3334,
                            "src": "5761:17:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5752:26:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3769,
                        "nodeType": "ExpressionStatement",
                        "src": "5752:26:13"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3772,
                    "name": "tokens",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3735,
                    "src": "5806:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3736,
                  "id": 3773,
                  "nodeType": "Return",
                  "src": "5799:13:13"
                }
              ]
            },
            "documentation": null,
            "id": 3775,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "userWinningTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3733,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3730,
                  "name": "_pollId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3775,
                  "src": "5478:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3729,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5478:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3732,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 3775,
                  "src": "5492:13:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3731,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5492:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5477:29:13"
            },
            "returnParameters": {
              "id": 3736,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3735,
                  "name": "tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 3775,
                  "src": "5528:11:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3734,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5528:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5527:13:13"
            },
            "scope": 3776,
            "src": "5451:368:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 3777,
        "src": "198:5640:13"
      }
    ],
    "src": "0:5839:13"
  },
  "legacyAST": {
    "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/voting/Voting.sol",
    "exportedSymbols": {
      "Voting": [
        3776
      ]
    },
    "id": 3777,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3284,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:13"
      },
      {
        "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/treasury/Treasury.sol",
        "file": "../treasury/Treasury.sol",
        "id": 3285,
        "nodeType": "ImportDirective",
        "scope": 3777,
        "sourceUnit": 1562,
        "src": "25:34:13",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/event/EventEmitter.sol",
        "file": "../event/EventEmitter.sol",
        "id": 3286,
        "nodeType": "ImportDirective",
        "scope": 3777,
        "sourceUnit": 141,
        "src": "60:35:13",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 3287,
        "nodeType": "ImportDirective",
        "scope": 3777,
        "sourceUnit": 3905,
        "src": "96:59:13",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@title Voting\n@author Freydal",
        "fullyImplemented": true,
        "id": 3776,
        "linearizedBaseContracts": [
          3776
        ],
        "name": "Voting",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 3290,
            "libraryName": {
              "contractScope": null,
              "id": 3288,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3904,
              "src": "226:8:13",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$3904",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "220:24:13",
            "typeName": {
              "id": 3289,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "239:4:13",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 3292,
            "name": "treasury",
            "nodeType": "VariableDeclaration",
            "scope": 3776,
            "src": "250:25:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Treasury_$1561",
              "typeString": "contract Treasury"
            },
            "typeName": {
              "contractScope": null,
              "id": 3291,
              "name": "Treasury",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1561,
              "src": "250:8:13",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Treasury_$1561",
                "typeString": "contract Treasury"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 3294,
            "name": "emitter",
            "nodeType": "VariableDeclaration",
            "scope": 3776,
            "src": "281:28:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_EventEmitter_$140",
              "typeString": "contract EventEmitter"
            },
            "typeName": {
              "contractScope": null,
              "id": 3293,
              "name": "EventEmitter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 140,
              "src": "281:12:13",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EventEmitter_$140",
                "typeString": "contract EventEmitter"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 3297,
            "name": "nextPollId",
            "nodeType": "VariableDeclaration",
            "scope": 3776,
            "src": "315:26:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3295,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "315:4:13",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 3296,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "340:1:13",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3301,
            "name": "polls",
            "nodeType": "VariableDeclaration",
            "scope": 3776,
            "src": "347:27:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
              "typeString": "mapping(uint256 => struct Voting.Poll)"
            },
            "typeName": {
              "id": 3300,
              "keyType": {
                "id": 3298,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "355:4:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "347:21:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
                "typeString": "mapping(uint256 => struct Voting.Poll)"
              },
              "valueType": {
                "contractScope": null,
                "id": 3299,
                "name": "Poll",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 3330,
                "src": "363:4:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                  "typeString": "struct Voting.Poll"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "canonicalName": "Voting.Poll",
            "id": 3330,
            "members": [
              {
                "constant": false,
                "id": 3303,
                "name": "id",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "403:7:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3302,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "403:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3305,
                "name": "creator",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "420:15:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 3304,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "420:7:13",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3307,
                "name": "commitEndBlock",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "445:19:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3306,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "445:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3309,
                "name": "revealEndBlock",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "474:19:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3308,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "474:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3311,
                "name": "currentLeadingOption",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "503:25:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3310,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "503:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3313,
                "name": "leadingTokens",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "538:18:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3312,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "538:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3317,
                "name": "voteValues",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "566:32:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 3316,
                  "keyType": {
                    "id": 3314,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "574:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "566:21:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 3315,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "582:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3321,
                "name": "didCommit",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "608:34:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "typeName": {
                  "id": 3320,
                  "keyType": {
                    "id": 3318,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "616:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "608:24:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "valueType": {
                    "id": 3319,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "627:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3325,
                "name": "didReveal",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "652:34:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "typeName": {
                  "id": 3324,
                  "keyType": {
                    "id": 3322,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "660:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "652:24:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "valueType": {
                    "id": 3323,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "671:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3329,
                "name": "votes",
                "nodeType": "VariableDeclaration",
                "scope": 3330,
                "src": "696:30:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Vote_$3339_storage_$",
                  "typeString": "mapping(address => struct Voting.Vote)"
                },
                "typeName": {
                  "id": 3328,
                  "keyType": {
                    "id": 3326,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "704:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "696:24:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Vote_$3339_storage_$",
                    "typeString": "mapping(address => struct Voting.Vote)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 3327,
                    "name": "Vote",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3339,
                    "src": "715:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                      "typeString": "struct Voting.Vote"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Poll",
            "nodeType": "StructDefinition",
            "scope": 3776,
            "src": "381:352:13",
            "visibility": "public"
          },
          {
            "canonicalName": "Voting.Vote",
            "id": 3339,
            "members": [
              {
                "constant": false,
                "id": 3332,
                "name": "hiddenVote",
                "nodeType": "VariableDeclaration",
                "scope": 3339,
                "src": "761:18:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 3331,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "761:7:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3334,
                "name": "tokensCommitted",
                "nodeType": "VariableDeclaration",
                "scope": 3339,
                "src": "789:20:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3333,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "789:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3336,
                "name": "salt",
                "nodeType": "VariableDeclaration",
                "scope": 3339,
                "src": "819:9:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3335,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "819:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3338,
                "name": "voteOption",
                "nodeType": "VariableDeclaration",
                "scope": 3339,
                "src": "838:15:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3337,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "838:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Vote",
            "nodeType": "StructDefinition",
            "scope": 3776,
            "src": "739:192:13",
            "visibility": "public"
          },
          {
            "body": {
              "id": 3358,
              "nodeType": "Block",
              "src": "1214:102:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3346,
                      "name": "emitter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3294,
                      "src": "1224:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventEmitter_$140",
                        "typeString": "contract EventEmitter"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3348,
                          "name": "_emitterAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3343,
                          "src": "1247:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3347,
                        "name": "EventEmitter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 140,
                        "src": "1234:12:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_EventEmitter_$140_$",
                          "typeString": "type(contract EventEmitter)"
                        }
                      },
                      "id": 3349,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1234:29:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventEmitter_$140",
                        "typeString": "contract EventEmitter"
                      }
                    },
                    "src": "1224:39:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EventEmitter_$140",
                      "typeString": "contract EventEmitter"
                    }
                  },
                  "id": 3351,
                  "nodeType": "ExpressionStatement",
                  "src": "1224:39:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3352,
                      "name": "treasury",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3292,
                      "src": "1273:8:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Treasury_$1561",
                        "typeString": "contract Treasury"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3354,
                          "name": "treasuryAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3341,
                          "src": "1293:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3353,
                        "name": "Treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1561,
                        "src": "1284:8:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Treasury_$1561_$",
                          "typeString": "type(contract Treasury)"
                        }
                      },
                      "id": 3355,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1284:25:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Treasury_$1561",
                        "typeString": "contract Treasury"
                      }
                    },
                    "src": "1273:36:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Treasury_$1561",
                      "typeString": "contract Treasury"
                    }
                  },
                  "id": 3357,
                  "nodeType": "ExpressionStatement",
                  "src": "1273:36:13"
                }
              ]
            },
            "documentation": "@dev Create a new voting engine\n@notice Create a new voting engine\n@param treasuryAddress Deployed Treasury address\n@param _emitterAddress Deployed EventEmitter address",
            "id": 3359,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3344,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3341,
                  "name": "treasuryAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3359,
                  "src": "1157:23:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3340,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1157:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3343,
                  "name": "_emitterAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3359,
                  "src": "1182:23:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3342,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1182:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1156:50:13"
            },
            "returnParameters": {
              "id": 3345,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1214:0:13"
            },
            "scope": 3776,
            "src": "1145:171:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3448,
              "nodeType": "Block",
              "src": "1788:678:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3369,
                          "name": "_commitEndBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3361,
                          "src": "1840:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3370,
                          "name": "_revealEndBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3363,
                          "src": "1858:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1840:33:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3368,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "1832:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3372,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1832:42:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3373,
                  "nodeType": "ExpressionStatement",
                  "src": "1832:42:13"
                },
                {
                  "assignments": [
                    3375
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3375,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 3448,
                      "src": "1909:14:13",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                        "typeString": "struct Voting.Poll"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3374,
                        "name": "Poll",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3330,
                        "src": "1909:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3379,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3376,
                      "name": "polls",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3301,
                      "src": "1926:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Poll storage ref)"
                      }
                    },
                    "id": 3378,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3377,
                      "name": "nextPollId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3297,
                      "src": "1932:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1926:17:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Poll_$3330_storage",
                      "typeString": "struct Voting.Poll storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1909:34:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3384,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3380,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3375,
                        "src": "1953:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll storage pointer"
                        }
                      },
                      "id": 3382,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "id",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3303,
                      "src": "1953:4:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3383,
                      "name": "nextPollId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3297,
                      "src": "1960:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1953:17:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3385,
                  "nodeType": "ExpressionStatement",
                  "src": "1953:17:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3386,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3375,
                        "src": "1980:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll storage pointer"
                        }
                      },
                      "id": 3388,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "creator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3305,
                      "src": "1980:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3389,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4569,
                        "src": "1992:3:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 3390,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1992:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1980:22:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3392,
                  "nodeType": "ExpressionStatement",
                  "src": "1980:22:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3393,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3375,
                        "src": "2012:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll storage pointer"
                        }
                      },
                      "id": 3395,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "commitEndBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3307,
                      "src": "2012:16:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3396,
                      "name": "_commitEndBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3361,
                      "src": "2031:15:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2012:34:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3398,
                  "nodeType": "ExpressionStatement",
                  "src": "2012:34:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3399,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3375,
                        "src": "2056:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll storage pointer"
                        }
                      },
                      "id": 3401,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "revealEndBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3309,
                      "src": "2056:16:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3402,
                      "name": "_revealEndBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3363,
                      "src": "2075:15:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2056:34:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3404,
                  "nodeType": "ExpressionStatement",
                  "src": "2056:34:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3406,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "2136:12:13",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 3405,
                      "name": "nextPollId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3297,
                      "src": "2136:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3407,
                  "nodeType": "ExpressionStatement",
                  "src": "2136:12:13"
                },
                {
                  "assignments": [
                    3411
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3411,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 3448,
                      "src": "2196:21:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3409,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2196:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3410,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2196:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3417,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 3415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2234:1:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "id": 3414,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2220:13:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3412,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2224:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3413,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2224:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 3416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2220:16:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2196:40:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3427,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3418,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3411,
                        "src": "2246:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3420,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3419,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2251:1:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2246:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3423,
                                "name": "p",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3375,
                                "src": "2269:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                                  "typeString": "struct Voting.Poll storage pointer"
                                }
                              },
                              "id": 3424,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "creator",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3305,
                              "src": "2269:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2264:4:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 3425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2264:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3421,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2256:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3426,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2256:24:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2246:34:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3428,
                  "nodeType": "ExpressionStatement",
                  "src": "2246:34:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3436,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3429,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3411,
                        "src": "2290:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3431,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3430,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2295:1:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2290:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3433,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3375,
                            "src": "2308:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                              "typeString": "struct Voting.Poll storage pointer"
                            }
                          },
                          "id": 3434,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "id",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3303,
                          "src": "2308:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3432,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2300:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3435,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2300:13:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2290:23:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3437,
                  "nodeType": "ExpressionStatement",
                  "src": "2290:23:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "506f6c6c43726561746564",
                        "id": 3441,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2388:13:13",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_581d88d62f3ac1cdd2f236867565d624dc442e707249addbe21e6fdccc0b270f",
                          "typeString": "literal_string \"PollCreated\""
                        },
                        "value": "PollCreated"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3442,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3411,
                        "src": "2403:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_581d88d62f3ac1cdd2f236867565d624dc442e707249addbe21e6fdccc0b270f",
                          "typeString": "literal_string \"PollCreated\""
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3438,
                        "name": "emitter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3294,
                        "src": "2370:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventEmitter_$140",
                          "typeString": "contract EventEmitter"
                        }
                      },
                      "id": 3440,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "emitEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 139,
                      "src": "2370:17:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,bytes32[] memory) external"
                      }
                    },
                    "id": 3443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2370:38:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3444,
                  "nodeType": "ExpressionStatement",
                  "src": "2370:38:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3445,
                      "name": "p",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3375,
                      "src": "2455:1:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                        "typeString": "struct Voting.Poll storage pointer"
                      }
                    },
                    "id": 3446,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "id",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3303,
                    "src": "2455:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3367,
                  "id": 3447,
                  "nodeType": "Return",
                  "src": "2448:11:13"
                }
              ]
            },
            "documentation": "@dev Create a new poll to accept votes based on the configuration\n@notice Create a new poll to accept votes based on the configuration\n@param _commitEndBlock Block number when commit phase ends\n@param _revealEndBlock Block number when reveal phase ends\n@return Poll index number. Will be used as the key for interacting with a vote.",
            "id": 3449,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createPoll",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3361,
                  "name": "_commitEndBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 3449,
                  "src": "1722:20:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3360,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1722:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3363,
                  "name": "_revealEndBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 3449,
                  "src": "1744:20:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3362,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1744:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1721:44:13"
            },
            "returnParameters": {
              "id": 3367,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3366,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3449,
                  "src": "1782:4:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3365,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1782:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1781:6:13"
            },
            "scope": 3776,
            "src": "1702:764:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3526,
              "nodeType": "Block",
              "src": "2827:651:13",
              "statements": [
                {
                  "assignments": [
                    3459
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3459,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 3526,
                      "src": "2866:14:13",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                        "typeString": "struct Voting.Poll"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3458,
                        "name": "Poll",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3330,
                        "src": "2866:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3463,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3460,
                      "name": "polls",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3301,
                      "src": "2883:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Poll storage ref)"
                      }
                    },
                    "id": 3462,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3461,
                      "name": "_pollId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3451,
                      "src": "2889:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2883:14:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Poll_$3330_storage",
                      "typeString": "struct Voting.Poll storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2866:31:13"
                },
                {
                  "assignments": [
                    3465
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3465,
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 3526,
                      "src": "2907:14:13",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3464,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3339,
                        "src": "2907:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3471,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3466,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3459,
                        "src": "2924:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll storage pointer"
                        }
                      },
                      "id": 3467,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "votes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3329,
                      "src": "2924:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Vote_$3339_storage_$",
                        "typeString": "mapping(address => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 3470,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3468,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4569,
                        "src": "2932:3:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 3469,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2932:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2924:19:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$3339_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2907:36:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3477,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3473,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "3074:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3074:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3475,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3459,
                            "src": "3090:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                              "typeString": "struct Voting.Poll storage pointer"
                            }
                          },
                          "id": 3476,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "commitEndBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3307,
                          "src": "3090:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3074:32:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3472,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "3066:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3478,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3066:41:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3479,
                  "nodeType": "ExpressionStatement",
                  "src": "3066:41:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3486,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3125:24:13",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3481,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3459,
                              "src": "3126:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                                "typeString": "struct Voting.Poll storage pointer"
                              }
                            },
                            "id": 3482,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "didCommit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3321,
                            "src": "3126:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 3485,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3483,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4569,
                              "src": "3138:3:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3484,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3138:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3126:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3480,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "3117:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3117:33:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3488,
                  "nodeType": "ExpressionStatement",
                  "src": "3117:33:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3492,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4569,
                                "src": "3191:3:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3191:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3490,
                              "name": "treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3292,
                              "src": "3168:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Treasury_$1561",
                                "typeString": "contract Treasury"
                              }
                            },
                            "id": 3491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "systemBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1413,
                            "src": "3168:22:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 3494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3168:34:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 3495,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3206:7:13",
                          "subdenomination": "ether",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000"
                          },
                          "value": "1"
                        },
                        "src": "3168:45:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3489,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "3160:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3160:54:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3498,
                  "nodeType": "ExpressionStatement",
                  "src": "3160:54:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3500,
                          "name": "_tokensToCommit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3455,
                          "src": "3232:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3250:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3232:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3499,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "3224:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3503,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3224:28:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3504,
                  "nodeType": "ExpressionStatement",
                  "src": "3224:28:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3505,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3465,
                        "src": "3315:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3507,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "tokensCommitted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3334,
                      "src": "3315:17:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3508,
                      "name": "_tokensToCommit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3455,
                      "src": "3335:15:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3315:35:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3510,
                  "nodeType": "ExpressionStatement",
                  "src": "3315:35:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3515,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3511,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3465,
                        "src": "3360:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3513,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "hiddenVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3332,
                      "src": "3360:12:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3514,
                      "name": "_vote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3453,
                      "src": "3375:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3360:20:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3516,
                  "nodeType": "ExpressionStatement",
                  "src": "3360:20:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3517,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3459,
                          "src": "3441:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                            "typeString": "struct Voting.Poll storage pointer"
                          }
                        },
                        "id": 3521,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "didCommit",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3321,
                        "src": "3441:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 3522,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3519,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4569,
                          "src": "3453:3:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3453:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3441:23:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 3523,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3467:4:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3441:30:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3525,
                  "nodeType": "ExpressionStatement",
                  "src": "3441:30:13"
                }
              ]
            },
            "documentation": "@dev Commit a vote in a poll to be later revealed\n@notice Commit a vote in a poll to be later revealed\n@param _pollId Poll index to act upon\n@param _vote Hash encoded vote\n@param _tokensToCommit Number of tokens to commit to vote",
            "id": 3527,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "commitVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3456,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3451,
                  "name": "_pollId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3527,
                  "src": "2769:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3450,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2769:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3453,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 3527,
                  "src": "2783:13:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3452,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2783:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3455,
                  "name": "_tokensToCommit",
                  "nodeType": "VariableDeclaration",
                  "scope": 3527,
                  "src": "2798:20:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3454,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2798:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2768:51:13"
            },
            "returnParameters": {
              "id": 3457,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2827:0:13"
            },
            "scope": 3776,
            "src": "2749:729:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3677,
              "nodeType": "Block",
              "src": "3826:1209:13",
              "statements": [
                {
                  "assignments": [
                    3537
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3537,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 3677,
                      "src": "3836:14:13",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                        "typeString": "struct Voting.Poll"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3536,
                        "name": "Poll",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3330,
                        "src": "3836:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3541,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3538,
                      "name": "polls",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3301,
                      "src": "3853:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Poll storage ref)"
                      }
                    },
                    "id": 3540,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3539,
                      "name": "_pollId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3529,
                      "src": "3859:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3853:14:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Poll_$3330_storage",
                      "typeString": "struct Voting.Poll storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3836:31:13"
                },
                {
                  "assignments": [
                    3543
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3543,
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 3677,
                      "src": "3877:14:13",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3542,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3339,
                        "src": "3877:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3549,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3544,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3537,
                        "src": "3894:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll storage pointer"
                        }
                      },
                      "id": 3545,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "votes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3329,
                      "src": "3894:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Vote_$3339_storage_$",
                        "typeString": "mapping(address => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 3548,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3546,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4569,
                        "src": "3902:3:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 3547,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3902:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3894:19:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$3339_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3877:36:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3555,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3551,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "4079:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4079:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3553,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3537,
                            "src": "4094:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                              "typeString": "struct Voting.Poll storage pointer"
                            }
                          },
                          "id": 3554,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "commitEndBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3307,
                          "src": "4094:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4079:31:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3550,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "4071:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4071:40:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3557,
                  "nodeType": "ExpressionStatement",
                  "src": "4071:40:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3563,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3559,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "4129:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4129:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3561,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3537,
                            "src": "4145:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                              "typeString": "struct Voting.Poll storage pointer"
                            }
                          },
                          "id": 3562,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "revealEndBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3309,
                          "src": "4145:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4129:32:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3558,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "4121:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4121:41:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3565,
                  "nodeType": "ExpressionStatement",
                  "src": "4121:41:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3567,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3537,
                            "src": "4180:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                              "typeString": "struct Voting.Poll storage pointer"
                            }
                          },
                          "id": 3568,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "didCommit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3321,
                          "src": "4180:11:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 3571,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3569,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4569,
                            "src": "4192:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4192:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4180:23:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3566,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "4172:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4172:32:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3573,
                  "nodeType": "ExpressionStatement",
                  "src": "4172:32:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3580,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "4222:24:13",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3575,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3537,
                              "src": "4223:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                                "typeString": "struct Voting.Poll storage pointer"
                              }
                            },
                            "id": 3576,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "didReveal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3325,
                            "src": "4223:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 3579,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3577,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4569,
                              "src": "4235:3:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3578,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4235:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4223:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3574,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "4214:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3581,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4214:33:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3582,
                  "nodeType": "ExpressionStatement",
                  "src": "4214:33:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3586,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4569,
                                "src": "4288:3:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4288:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3584,
                              "name": "treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3292,
                              "src": "4265:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Treasury_$1561",
                                "typeString": "contract Treasury"
                              }
                            },
                            "id": 3585,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "systemBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1413,
                            "src": "4265:22:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 3588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4265:34:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3589,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3543,
                            "src": "4303:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 3590,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tokensCommitted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3334,
                          "src": "4303:17:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4265:55:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3583,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "4257:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3592,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4257:64:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3593,
                  "nodeType": "ExpressionStatement",
                  "src": "4257:64:13"
                },
                {
                  "assignments": [
                    3595
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3595,
                      "name": "exposedVote",
                      "nodeType": "VariableDeclaration",
                      "scope": 3677,
                      "src": "4382:19:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3594,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4382:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3603,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3599,
                            "name": "_voteOption",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3531,
                            "src": "4431:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3600,
                            "name": "_voteSalt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3533,
                            "src": "4444:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3597,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4556,
                            "src": "4414:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 3598,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4414:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 3601,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4414:40:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 3596,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4563,
                      "src": "4404:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 3602,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4404:51:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4382:73:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3608,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3605,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3543,
                            "src": "4473:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 3606,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "hiddenVote",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3332,
                          "src": "4473:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3607,
                          "name": "exposedVote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3595,
                          "src": "4489:11:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "4473:27:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3604,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "4465:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3609,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4465:36:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3610,
                  "nodeType": "ExpressionStatement",
                  "src": "4465:36:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3615,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3611,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3543,
                        "src": "4586:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3613,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "salt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3336,
                      "src": "4586:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3614,
                      "name": "_voteSalt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3533,
                      "src": "4595:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4586:18:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3616,
                  "nodeType": "ExpressionStatement",
                  "src": "4586:18:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3617,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3543,
                        "src": "4614:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 3619,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "voteOption",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3338,
                      "src": "4614:12:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3620,
                      "name": "_voteOption",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3531,
                      "src": "4629:11:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4614:26:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3622,
                  "nodeType": "ExpressionStatement",
                  "src": "4614:26:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3623,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3537,
                          "src": "4650:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                            "typeString": "struct Voting.Poll storage pointer"
                          }
                        },
                        "id": 3627,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "didReveal",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3325,
                        "src": "4650:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 3628,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3625,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4569,
                          "src": "4662:3:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4662:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4650:23:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 3629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4676:4:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "4650:30:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3631,
                  "nodeType": "ExpressionStatement",
                  "src": "4650:30:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3645,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3632,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3537,
                          "src": "4690:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                            "typeString": "struct Voting.Poll storage pointer"
                          }
                        },
                        "id": 3635,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voteValues",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3317,
                        "src": "4690:12:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 3636,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3634,
                        "name": "_voteOption",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3531,
                        "src": "4703:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4690:25:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3642,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3543,
                            "src": "4748:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 3643,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tokensCommitted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3334,
                          "src": "4748:17:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3637,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3537,
                              "src": "4718:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                                "typeString": "struct Voting.Poll storage pointer"
                              }
                            },
                            "id": 3638,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "voteValues",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3317,
                            "src": "4718:12:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 3640,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3639,
                            "name": "_voteOption",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3531,
                            "src": "4731:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4718:25:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3641,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3883,
                        "src": "4718:29:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 3644,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4718:48:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4690:76:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3646,
                  "nodeType": "ExpressionStatement",
                  "src": "4690:76:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3647,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3537,
                          "src": "4817:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                            "typeString": "struct Voting.Poll storage pointer"
                          }
                        },
                        "id": 3648,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "currentLeadingOption",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3311,
                        "src": "4817:22:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 3649,
                        "name": "_voteOption",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3531,
                        "src": "4843:11:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4817:37:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3657,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3651,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3537,
                            "src": "4858:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                              "typeString": "struct Voting.Poll storage pointer"
                            }
                          },
                          "id": 3652,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "voteValues",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3317,
                          "src": "4858:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                            "typeString": "mapping(uint256 => uint256)"
                          }
                        },
                        "id": 3654,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3653,
                          "name": "_voteOption",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3531,
                          "src": "4871:11:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4858:25:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3655,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3537,
                          "src": "4886:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                            "typeString": "struct Voting.Poll storage pointer"
                          }
                        },
                        "id": 3656,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "leadingTokens",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3313,
                        "src": "4886:15:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4858:43:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4817:84:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3666,
                  "nodeType": "IfStatement",
                  "src": "4814:150:13",
                  "trueBody": {
                    "id": 3665,
                    "nodeType": "Block",
                    "src": "4903:61:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3659,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3537,
                              "src": "4917:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                                "typeString": "struct Voting.Poll storage pointer"
                              }
                            },
                            "id": 3661,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currentLeadingOption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3311,
                            "src": "4917:22:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3662,
                            "name": "_voteOption",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3531,
                            "src": "4942:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4917:36:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3664,
                        "nodeType": "ExpressionStatement",
                        "src": "4917:36:13"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3667,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3537,
                        "src": "4974:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll storage pointer"
                        }
                      },
                      "id": 3669,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "leadingTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3313,
                      "src": "4974:15:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3670,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3537,
                          "src": "4992:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                            "typeString": "struct Voting.Poll storage pointer"
                          }
                        },
                        "id": 3671,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voteValues",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3317,
                        "src": "4992:12:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 3674,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3672,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3537,
                          "src": "5005:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                            "typeString": "struct Voting.Poll storage pointer"
                          }
                        },
                        "id": 3673,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "currentLeadingOption",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3311,
                        "src": "5005:22:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4992:36:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4974:54:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3676,
                  "nodeType": "ExpressionStatement",
                  "src": "4974:54:13"
                }
              ]
            },
            "documentation": "@dev Reveal a previously committed vote\n@notice Reveal a previously committed vote\n@param _pollId Poll index to act upon\n@param _voteOption User vote option\n@param _voteSalt Salt used to in hash to obfuscate vote option",
            "id": 3678,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "revealVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3529,
                  "name": "_pollId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3678,
                  "src": "3771:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3528,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3771:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3531,
                  "name": "_voteOption",
                  "nodeType": "VariableDeclaration",
                  "scope": 3678,
                  "src": "3785:16:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3530,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3785:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3533,
                  "name": "_voteSalt",
                  "nodeType": "VariableDeclaration",
                  "scope": 3678,
                  "src": "3803:14:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3532,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3803:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3770:48:13"
            },
            "returnParameters": {
              "id": 3535,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3826:0:13"
            },
            "scope": 3776,
            "src": "3751:1284:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3702,
              "nodeType": "Block",
              "src": "5105:136:13",
              "statements": [
                {
                  "assignments": [
                    3686
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3686,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 3702,
                      "src": "5115:13:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                        "typeString": "struct Voting.Poll"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3685,
                        "name": "Poll",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3330,
                        "src": "5115:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3690,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3687,
                      "name": "polls",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3301,
                      "src": "5131:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Poll storage ref)"
                      }
                    },
                    "id": 3689,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3688,
                      "name": "_pollId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3680,
                      "src": "5137:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5131:14:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Poll_$3330_storage",
                      "typeString": "struct Voting.Poll storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5115:30:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3696,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3692,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3686,
                            "src": "5163:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                              "typeString": "struct Voting.Poll memory"
                            }
                          },
                          "id": 3693,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "revealEndBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3309,
                          "src": "5163:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3694,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "5182:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5182:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5163:31:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3691,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "5155:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3697,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5155:40:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3698,
                  "nodeType": "ExpressionStatement",
                  "src": "5155:40:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3699,
                      "name": "p",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3686,
                      "src": "5212:1:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                        "typeString": "struct Voting.Poll memory"
                      }
                    },
                    "id": 3700,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "currentLeadingOption",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3311,
                    "src": "5212:22:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3684,
                  "id": 3701,
                  "nodeType": "Return",
                  "src": "5205:29:13"
                }
              ]
            },
            "documentation": null,
            "id": 3703,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "winningOption",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3681,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3680,
                  "name": "_pollId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3703,
                  "src": "5064:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3679,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5064:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5063:14:13"
            },
            "returnParameters": {
              "id": 3684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3683,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3703,
                  "src": "5099:4:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3682,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5099:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5098:6:13"
            },
            "scope": 3776,
            "src": "5041:200:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3727,
              "nodeType": "Block",
              "src": "5316:129:13",
              "statements": [
                {
                  "assignments": [
                    3711
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3711,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 3727,
                      "src": "5326:13:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                        "typeString": "struct Voting.Poll"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3710,
                        "name": "Poll",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3330,
                        "src": "5326:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3715,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3712,
                      "name": "polls",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3301,
                      "src": "5342:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Poll storage ref)"
                      }
                    },
                    "id": 3714,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3713,
                      "name": "_pollId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3705,
                      "src": "5348:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5342:14:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Poll_$3330_storage",
                      "typeString": "struct Voting.Poll storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5326:30:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3717,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3711,
                            "src": "5374:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                              "typeString": "struct Voting.Poll memory"
                            }
                          },
                          "id": 3718,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "revealEndBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3309,
                          "src": "5374:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3719,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "5393:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5393:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5374:31:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3716,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "5366:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3722,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5366:40:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3723,
                  "nodeType": "ExpressionStatement",
                  "src": "5366:40:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3724,
                      "name": "p",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3711,
                      "src": "5423:1:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                        "typeString": "struct Voting.Poll memory"
                      }
                    },
                    "id": 3725,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "leadingTokens",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3313,
                    "src": "5423:15:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3709,
                  "id": 3726,
                  "nodeType": "Return",
                  "src": "5416:22:13"
                }
              ]
            },
            "documentation": null,
            "id": 3728,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "totalWinningTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3706,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3705,
                  "name": "_pollId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3728,
                  "src": "5275:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3704,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5275:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5274:14:13"
            },
            "returnParameters": {
              "id": 3709,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3708,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3728,
                  "src": "5310:4:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3707,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5310:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5309:6:13"
            },
            "scope": 3776,
            "src": "5247:198:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3774,
              "nodeType": "Block",
              "src": "5541:278:13",
              "statements": [
                {
                  "assignments": [
                    3738
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3738,
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "scope": 3774,
                      "src": "5551:13:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                        "typeString": "struct Voting.Poll"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3737,
                        "name": "Poll",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3330,
                        "src": "5551:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage_ptr",
                          "typeString": "struct Voting.Poll"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3742,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3739,
                      "name": "polls",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3301,
                      "src": "5567:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Poll storage ref)"
                      }
                    },
                    "id": 3741,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3740,
                      "name": "_pollId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3730,
                      "src": "5573:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5567:14:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Poll_$3330_storage",
                      "typeString": "struct Voting.Poll storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5551:30:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3748,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3744,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3738,
                            "src": "5599:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                              "typeString": "struct Voting.Poll memory"
                            }
                          },
                          "id": 3745,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "revealEndBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3309,
                          "src": "5599:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3746,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "5618:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 3747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5618:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5599:31:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3743,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "5591:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3749,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5591:40:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3750,
                  "nodeType": "ExpressionStatement",
                  "src": "5591:40:13"
                },
                {
                  "assignments": [
                    3752
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3752,
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "scope": 3774,
                      "src": "5641:13:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$3339_memory_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3751,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3339,
                        "src": "5641:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$3339_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3759,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3753,
                          "name": "polls",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3301,
                          "src": "5657:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Poll_$3330_storage_$",
                            "typeString": "mapping(uint256 => struct Voting.Poll storage ref)"
                          }
                        },
                        "id": 3755,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3754,
                          "name": "_pollId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3730,
                          "src": "5663:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5657:14:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_storage",
                          "typeString": "struct Voting.Poll storage ref"
                        }
                      },
                      "id": 3756,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "votes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3329,
                      "src": "5657:20:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Vote_$3339_storage_$",
                        "typeString": "mapping(address => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 3758,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3757,
                      "name": "_user",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3732,
                      "src": "5678:5:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5657:27:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$3339_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5641:43:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3764,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3760,
                        "name": "p",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3738,
                        "src": "5698:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Poll_$3330_memory_ptr",
                          "typeString": "struct Voting.Poll memory"
                        }
                      },
                      "id": 3761,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "currentLeadingOption",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3311,
                      "src": "5698:22:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3762,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3752,
                        "src": "5724:1:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$3339_memory_ptr",
                          "typeString": "struct Voting.Vote memory"
                        }
                      },
                      "id": 3763,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voteOption",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3338,
                      "src": "5724:12:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5698:38:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3771,
                  "nodeType": "IfStatement",
                  "src": "5695:94:13",
                  "trueBody": {
                    "id": 3770,
                    "nodeType": "Block",
                    "src": "5738:51:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3765,
                            "name": "tokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3735,
                            "src": "5752:6:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3766,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3752,
                              "src": "5761:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$3339_memory_ptr",
                                "typeString": "struct Voting.Vote memory"
                              }
                            },
                            "id": 3767,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tokensCommitted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3334,
                            "src": "5761:17:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5752:26:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3769,
                        "nodeType": "ExpressionStatement",
                        "src": "5752:26:13"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3772,
                    "name": "tokens",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3735,
                    "src": "5806:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3736,
                  "id": 3773,
                  "nodeType": "Return",
                  "src": "5799:13:13"
                }
              ]
            },
            "documentation": null,
            "id": 3775,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "userWinningTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3733,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3730,
                  "name": "_pollId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3775,
                  "src": "5478:12:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3729,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5478:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3732,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 3775,
                  "src": "5492:13:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3731,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5492:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5477:29:13"
            },
            "returnParameters": {
              "id": 3736,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3735,
                  "name": "tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 3775,
                  "src": "5528:11:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3734,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5528:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5527:13:13"
            },
            "scope": 3776,
            "src": "5451:368:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 3777,
        "src": "198:5640:13"
      }
    ],
    "src": "0:5839:13"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {},
      "address": "0xd73B3E6B4b7702569720B93e1C27D33cB91f8407",
      "transactionHash": "0xc1dcd42fc834ecb6963e9e869730058d8c500eae9421bc951923a5618e79e531"
    },
    "6174": {
      "events": {},
      "links": {},
      "address": "0x104e20fc94A38016715553DCED247f57c92802DE",
      "transactionHash": "0x0d9919af3cd3207d5d69c7e44ac85d5a0e7bdb3f59c7203c2dd123a7325b2d77"
    }
  },
  "schemaVersion": "3.0.2",
  "updatedAt": "2019-04-04T17:37:24.653Z",
  "devdoc": {
    "author": "Freydal",
    "methods": {
      "commitVote(uint256,bytes32,uint256)": {
        "details": "Commit a vote in a poll to be later revealed",
        "params": {
          "_pollId": "Poll index to act upon",
          "_tokensToCommit": "Number of tokens to commit to vote",
          "_vote": "Hash encoded vote"
        }
      },
      "constructor": {
        "details": "Create a new voting engine",
        "params": {
          "_emitterAddress": "Deployed EventEmitter address",
          "treasuryAddress": "Deployed Treasury address"
        }
      },
      "createPoll(uint256,uint256)": {
        "details": "Create a new poll to accept votes based on the configuration",
        "params": {
          "_commitEndBlock": "Block number when commit phase ends",
          "_revealEndBlock": "Block number when reveal phase ends"
        },
        "return": "Poll index number. Will be used as the key for interacting with a vote."
      },
      "revealVote(uint256,uint256,uint256)": {
        "details": "Reveal a previously committed vote",
        "params": {
          "_pollId": "Poll index to act upon",
          "_voteOption": "User vote option",
          "_voteSalt": "Salt used to in hash to obfuscate vote option"
        }
      }
    },
    "title": "Voting"
  },
  "userdoc": {
    "methods": {
      "commitVote(uint256,bytes32,uint256)": {
        "notice": "Commit a vote in a poll to be later revealed"
      },
      "constructor": "Create a new voting engine",
      "createPoll(uint256,uint256)": {
        "notice": "Create a new poll to accept votes based on the configuration"
      },
      "revealVote(uint256,uint256,uint256)": {
        "notice": "Reveal a previously committed vote"
      }
    }
  }
}