{
  "contractName": "GenesisProtocolLogic",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_stakingToken",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_organization",
          "type": "address"
        }
      ],
      "name": "CancelProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "CancelVoting",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_confidenceThreshold",
          "type": "uint256"
        }
      ],
      "name": "ConfidenceLevelChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_decision",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_totalReputation",
          "type": "uint256"
        }
      ],
      "name": "ExecuteProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "ExpirationCallBounty",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "enum GenesisProtocolLogic.ExecutionState",
          "name": "_executionState",
          "type": "uint8"
        }
      ],
      "name": "GPExecuteProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_numOfChoices",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_proposer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_paramsHash",
          "type": "bytes32"
        }
      ],
      "name": "NewProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "Redeem",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "RedeemDaoBounty",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "RedeemReputation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_staker",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_vote",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "Stake",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "enum GenesisProtocolLogic.ProposalState",
          "name": "_proposalState",
          "type": "uint8"
        }
      ],
      "name": "StateChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_vote",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_reputation",
          "type": "uint256"
        }
      ],
      "name": "VoteProposal",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "NO",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "NUM_OF_CHOICES",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "YES",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "averagesDownstakesOfBoosted",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "cancelVote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getAllowedRangeOfChoices",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "getNumberOfChoices",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isAbstainAllow",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "isVotable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "orgBoostedProposalsCnt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "organizations",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "parameters",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "queuedVoteRequiredPercentage",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "queuedVotePeriodLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "boostedVotePeriodLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "preBoostedVotePeriodLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "thresholdConst",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "limitExponentValue",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "quietEndingPeriod",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "proposingRepReward",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "votersReputationLossRatio",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minimumDaoBounty",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "daoBountyConst",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "activationTime",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voteOnBehalf",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "proposals",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "organizationId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "callbacks",
          "type": "address"
        },
        {
          "internalType": "enum GenesisProtocolLogic.ProposalState",
          "name": "state",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "winningVote",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "proposer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "currentBoostedVotePeriodLimit",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "paramsHash",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "daoBountyRemain",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "daoBounty",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalStakes",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "confidenceThreshold",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expirationCallBountyPercentage",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "daoRedeemItsWinnings",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "proposalsCnt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "stakingToken",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_vote",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_rep",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "vote",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_choice",
          "type": "uint256"
        }
      ],
      "name": "voteStatus",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_paramsHash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_proposer",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_organization",
          "type": "address"
        }
      ],
      "name": "propose",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "executeBoosted",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "expirationCallBounty",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256[11]",
          "name": "_params",
          "type": "uint256[11]"
        },
        {
          "internalType": "address",
          "name": "_voteOnBehalf",
          "type": "address"
        }
      ],
      "name": "setParameters",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        }
      ],
      "name": "redeem",
      "outputs": [
        {
          "internalType": "uint256[3]",
          "name": "rewards",
          "type": "uint256[3]"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        }
      ],
      "name": "redeemDaoBounty",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "redeemedAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "potentialAmount",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "shouldBoost",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_paramsHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_organizationId",
          "type": "bytes32"
        }
      ],
      "name": "threshold",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256[11]",
          "name": "_params",
          "type": "uint256[11]"
        },
        {
          "internalType": "address",
          "name": "_voteOnBehalf",
          "type": "address"
        }
      ],
      "name": "getParametersHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_stakingToken\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_organization\",\"type\":\"address\"}],\"name\":\"CancelProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_organization\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_voter\",\"type\":\"address\"}],\"name\":\"CancelVoting\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_confidenceThreshold\",\"type\":\"uint256\"}],\"name\":\"ConfidenceLevelChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_organization\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_decision\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_totalReputation\",\"type\":\"uint256\"}],\"name\":\"ExecuteProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ExpirationCallBounty\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum GenesisProtocolLogic.ExecutionState\",\"name\":\"_executionState\",\"type\":\"uint8\"}],\"name\":\"GPExecuteProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_organization\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_numOfChoices\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_paramsHash\",\"type\":\"bytes32\"}],\"name\":\"NewProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_organization\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Redeem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_organization\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"RedeemDaoBounty\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_organization\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"RedeemReputation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_organization\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_vote\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Stake\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum GenesisProtocolLogic.ProposalState\",\"name\":\"_proposalState\",\"type\":\"uint8\"}],\"name\":\"StateChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_organization\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_vote\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_reputation\",\"type\":\"uint256\"}],\"name\":\"VoteProposal\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"NO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"NUM_OF_CHOICES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"YES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"averagesDownstakesOfBoosted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"cancelVote\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"executeBoosted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"expirationCallBounty\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAllowedRangeOfChoices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"getNumberOfChoices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256[11]\",\"name\":\"_params\",\"type\":\"uint256[11]\"},{\"internalType\":\"address\",\"name\":\"_voteOnBehalf\",\"type\":\"address\"}],\"name\":\"getParametersHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAbstainAllow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"isVotable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"orgBoostedProposalsCnt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"organizations\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"parameters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"queuedVoteRequiredPercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"queuedVotePeriodLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"boostedVotePeriodLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preBoostedVotePeriodLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"thresholdConst\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitExponentValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quietEndingPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposingRepReward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"votersReputationLossRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumDaoBounty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"daoBountyConst\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activationTime\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"voteOnBehalf\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"proposals\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"organizationId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callbacks\",\"type\":\"address\"},{\"internalType\":\"enum GenesisProtocolLogic.ProposalState\",\"name\":\"state\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"winningVote\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentBoostedVotePeriodLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"paramsHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"daoBountyRemain\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"daoBounty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalStakes\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"confidenceThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationCallBountyPercentage\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"daoRedeemItsWinnings\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"proposalsCnt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_paramsHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_organization\",\"type\":\"address\"}],\"name\":\"propose\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256[3]\",\"name\":\"rewards\",\"type\":\"uint256[3]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"redeemDaoBounty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"potentialAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256[11]\",\"name\":\"_params\",\"type\":\"uint256[11]\"},{\"internalType\":\"address\",\"name\":\"_voteOnBehalf\",\"type\":\"address\"}],\"name\":\"setParameters\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"shouldBoost\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"stakingToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_paramsHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_organizationId\",\"type\":\"bytes32\"}],\"name\":\"threshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_vote\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_rep\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_voter\",\"type\":\"address\"}],\"name\":\"vote\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_choice\",\"type\":\"uint256\"}],\"name\":\"voteStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"constructor\":{\"details\":\"Constructor\"},\"executeBoosted(bytes32)\":{\"details\":\"executeBoosted try to execute a boosted or QuietEndingPeriod proposal if it is expired\",\"params\":{\"_proposalId\":\"the id of the proposal\"},\"return\":\"uint256 expirationCallBounty the bounty amount for the expiration call\"},\"getAllowedRangeOfChoices()\":{\"details\":\"getAllowedRangeOfChoices returns the allowed range of choices for a voting machine.\",\"return\":\"min - minimum number of choices max - maximum number of choices\"},\"getParametersHash(uint256[11],address)\":{\"details\":\"hashParameters returns a hash of the given parameters\"},\"isAbstainAllow()\":{\"details\":\"isAbstainAllow returns if the voting machine allow abstain (0)\",\"return\":\"bool true or false\"},\"propose(uint256,bytes32,address,address)\":{\"details\":\"register a new proposal with the given parameters. Every proposal has a unique ID which is being generated by calculating keccak256 of a incremented counter.\",\"params\":{\"_organization\":\"address\",\"_paramsHash\":\"parameters hash\",\"_proposer\":\"address\"}},\"redeem(bytes32,address)\":{\"details\":\"redeem a reward for a successful stake, vote or proposing. The function use a beneficiary address as a parameter (and not msg.sender) to enable users to redeem on behalf of someone else.\",\"params\":{\"_beneficiary\":\"- the beneficiary address\",\"_proposalId\":\"the ID of the proposal\"},\"return\":\"rewards -          [0] stakerTokenReward          [1] voterReputationReward          [2] proposerReputationReward\"},\"redeemDaoBounty(bytes32,address)\":{\"details\":\"redeemDaoBounty a reward for a successful stake. The function use a beneficiary address as a parameter (and not msg.sender) to enable users to redeem on behalf of someone else.\",\"params\":{\"_beneficiary\":\"- the beneficiary address\",\"_proposalId\":\"the ID of the proposal\"},\"return\":\"redeemedAmount - redeem token amountpotentialAmount - potential redeem token amount(if there is enough tokens bounty at the organization )\"},\"setParameters(uint256[11],address)\":{\"details\":\"hash the parameters, save them if necessary, and return the hash value\",\"params\":{\"_params\":\"a parameters array   _params[0] - _queuedVoteRequiredPercentage,   _params[1] - _queuedVotePeriodLimit, //the time limit for a proposal to be in an absolute voting mode.   _params[2] - _boostedVotePeriodLimit, //the time limit for a proposal to be in an relative voting mode.   _params[3] - _preBoostedVotePeriodLimit, //the time limit for a proposal to be in an preparation                 state (stable) before boosted.   _params[4] -_thresholdConst   _params[5] -_quietEndingPeriod   _params[6] -_proposingRepReward   _params[7] -_votersReputationLossRatio   _params[8] -_minimumDaoBounty   _params[9] -_daoBountyConst   _params[10] -_activationTime\",\"_voteOnBehalf\":\"- authorized to vote on behalf of others.\"}},\"shouldBoost(bytes32)\":{\"details\":\"shouldBoost check if a proposal should be shifted to boosted phase.\",\"params\":{\"_proposalId\":\"the ID of the proposal\"},\"return\":\"bool true or false.\"},\"threshold(bytes32,bytes32)\":{\"details\":\"threshold return the organization's score threshold which required by a proposal to shift to boosted state. This threshold is dynamically set and it depend on the number of boosted proposal.\",\"params\":{\"_organizationId\":\"the organization identifier\",\"_paramsHash\":\"the organization parameters hash\"},\"return\":\"uint256 organization's score threshold as real number.\"},\"voteStatus(bytes32,uint256)\":{\"details\":\"voteStatus returns the reputation voted for a proposal for a specific voting choice.\",\"params\":{\"_choice\":\"the index in the\",\"_proposalId\":\"the ID of the proposal\"},\"return\":\"voted reputation for the given choice\"}},\"title\":\"GenesisProtocol implementation -an organization's voting machine scheme.\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@daostack/infra/contracts/votingMachines/GenesisProtocolLogic.sol\":\"GenesisProtocolLogic\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@daostack/infra/contracts/libs/RealMath.sol\":{\"keccak256\":\"0x3ee79c4b483da327916ac36f9d5cc6a1f2f0363db3ad06793ec67f46e1f653db\",\"urls\":[\"bzz-raw://19b423aa16b93e414c50ca513caabc0f1cb835f31deec82d85d9bb31c0f8d5fb\",\"dweb:/ipfs/QmS8gjtT3jxxoNAosJf6QSStFAE2KZLhNA1Qq9MXwT2CnN\"]},\"@daostack/infra/contracts/votingMachines/GenesisProtocolLogic.sol\":{\"keccak256\":\"0x2bf5fba64fbda5605b9250ea8ca6d8e28dab41fb0e2b43c9145b91e1d0425eef\",\"urls\":[\"bzz-raw://3b34c1f70c2b98d4f3add9264700f60cb3deed47610e010f3d4ac112ab107930\",\"dweb:/ipfs/QmY46SXZnKJeUmbsSfwkW1zNh1YP4FHUjAbVJUJXqhKNwV\"]},\"@daostack/infra/contracts/votingMachines/IntVoteInterface.sol\":{\"keccak256\":\"0x877991da94b1fe9c2accf69367b32fff474c4e4f7897e9cf5a61fa5d1378908f\",\"urls\":[\"bzz-raw://4ea2c35248b82ea74884313752870789de61b0bcbc14425e97192b1ef1450e5a\",\"dweb:/ipfs/QmZ9RxpmG6SsMLJm1hT9ZmVy3CVPNZyRihQxZFDk8u3w1G\"]},\"@daostack/infra/contracts/votingMachines/ProposalExecuteInterface.sol\":{\"keccak256\":\"0xb80a153793e1723b35e70ba1c3800975fbc1fae63c989cfb8134a4e58085e181\",\"urls\":[\"bzz-raw://7ea97373ca977623d4c480c1d03e0853b1b34d59df4928ef72548987b2943899\",\"dweb:/ipfs/QmZ1MmDX4ExZ1iEo9gFp3SHfpNjWoLHS9nVhFkTRokgoLS\"]},\"@daostack/infra/contracts/votingMachines/VotingMachineCallbacksInterface.sol\":{\"keccak256\":\"0xec215d305f0aa5a5193b6f0302a1aa6bb84e85460167f80b261faf9d30564563\",\"urls\":[\"bzz-raw://8edb25b20c86a28b5c7c7c3a918f219106a1d3047933984dd76e33e30911857d\",\"dweb:/ipfs/Qme1iBcLjPPrC6jMF56cSE9pmEdCQ23aT43wQbnqKjXEYe\"]},\"openzeppelin-solidity/contracts/math/Math.sol\":{\"keccak256\":\"0x37605dd0606b349cfb1b679892e1bb0ef4ddc16dedb06e229cc4402610a7a848\",\"urls\":[\"bzz-raw://c44b0c7fe0523f3f9a10d2924d7d7137b1349b1e71cd4be57550e185a098ca55\",\"dweb:/ipfs/QmbBLBCBPpqna3QZTiomSwyBdtt5Ua9DqkFgYicMd7Coya\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzz-raw://1eb493553b27efd46c231a836a83ce50d215639feb97b4aac9f301d0fd034ff5\",\"dweb:/ipfs/QmbMdvSXcqGKxeeYvzF3VrWpoHQyVzMXBhzhAokF2Gdymv\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzz-raw://ee762ff5b7746e41d27dcbcea00c7a3034b58adb1b45ddadddb5b721aff450df\",\"dweb:/ipfs/QmdxqtgEFZjHCoiYyz6pUAQ5iBm7As25jcyEbZoTaAgyDa\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0x5c731061b804fa256fc8c05150eafe5d20b6bb94541a8f187912bf84f7033f34\",\"urls\":[\"bzz-raw://a3c2d9f046beebab7fb41b1b124a6a124a36f510f7c67365861402ac831bdc71\",\"dweb:/ipfs/QmUtASRgitregbKH83anopLtF9vFQe3BKeAjhUa6F7t9YV\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity ^0.5.4;\n\nimport \"./IntVoteInterface.sol\";\nimport { RealMath } from \"../libs/RealMath.sol\";\nimport \"./VotingMachineCallbacksInterface.sol\";\nimport \"./ProposalExecuteInterface.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/math/Math.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\nimport \"openzeppelin-solidity/contracts/utils/Address.sol\";\n\n\n\n/**\n * @title GenesisProtocol implementation -an organization's voting machine scheme.\n */\ncontract GenesisProtocolLogic is IntVoteInterface {\n    using SafeMath for uint256;\n    using Math for uint256;\n    using RealMath for uint216;\n    using RealMath for uint256;\n    using Address for address;\n\n    enum ProposalState { None, ExpiredInQueue, Executed, Queued, PreBoosted, Boosted, QuietEndingPeriod}\n    enum ExecutionState { None, QueueBarCrossed, QueueTimeOut, PreBoostedBarCrossed, BoostedTimeOut, BoostedBarCrossed}\n\n    //Organization's parameters\n    struct Parameters {\n        uint256 queuedVoteRequiredPercentage; // the absolute vote percentages bar.\n        uint256 queuedVotePeriodLimit; //the time limit for a proposal to be in an absolute voting mode.\n        uint256 boostedVotePeriodLimit; //the time limit for a proposal to be in boost mode.\n        uint256 preBoostedVotePeriodLimit; //the time limit for a proposal\n                                          //to be in an preparation state (stable) before boosted.\n        uint256 thresholdConst; //constant  for threshold calculation .\n                                //threshold =thresholdConst ** (numberOfBoostedProposals)\n        uint256 limitExponentValue;// an upper limit for numberOfBoostedProposals\n                                   //in the threshold calculation to prevent overflow\n        uint256 quietEndingPeriod; //quite ending period\n        uint256 proposingRepReward;//proposer reputation reward.\n        uint256 votersReputationLossRatio;//Unsuccessful pre booster\n                                          //voters lose votersReputationLossRatio% of their reputation.\n        uint256 minimumDaoBounty;\n        uint256 daoBountyConst;//The DAO downstake for each proposal is calculate according to the formula\n                               //(daoBountyConst * averageBoostDownstakes)/100 .\n        uint256 activationTime;//the point in time after which proposals can be created.\n        //if this address is set so only this address is allowed to vote of behalf of someone else.\n        address voteOnBehalf;\n    }\n\n    struct Voter {\n        uint256 vote; // YES(1) ,NO(2)\n        uint256 reputation; // amount of voter's reputation\n        bool preBoosted;\n    }\n\n    struct Staker {\n        uint256 vote; // YES(1) ,NO(2)\n        uint256 amount; // amount of staker's stake\n        uint256 amount4Bounty;// amount of staker's stake used for bounty reward calculation.\n    }\n\n    struct Proposal {\n        bytes32 organizationId; // the organization unique identifier the proposal is target to.\n        address callbacks;    // should fulfill voting callbacks interface.\n        ProposalState state;\n        uint256 winningVote; //the winning vote.\n        address proposer;\n        //the proposal boosted period limit . it is updated for the case of quiteWindow mode.\n        uint256 currentBoostedVotePeriodLimit;\n        bytes32 paramsHash;\n        uint256 daoBountyRemain; //use for checking sum zero bounty claims.it is set at the proposing time.\n        uint256 daoBounty;\n        uint256 totalStakes;// Total number of tokens staked which can be redeemable by stakers.\n        uint256 confidenceThreshold;\n        //The percentage from upper stakes which the caller for the expiration was given.\n        uint256 expirationCallBountyPercentage;\n        uint[3] times; //times[0] - submittedTime\n                       //times[1] - boostedPhaseTime\n                       //times[2] -preBoostedPhaseTime;\n        bool daoRedeemItsWinnings;\n        //      vote      reputation\n        mapping(uint256   =>  uint256    ) votes;\n        //      vote      reputation\n        mapping(uint256   =>  uint256    ) preBoostedVotes;\n        //      address     voter\n        mapping(address =>  Voter    ) voters;\n        //      vote        stakes\n        mapping(uint256   =>  uint256    ) stakes;\n        //      address  staker\n        mapping(address  => Staker   ) stakers;\n    }\n\n    event Stake(bytes32 indexed _proposalId,\n        address indexed _organization,\n        address indexed _staker,\n        uint256 _vote,\n        uint256 _amount\n    );\n\n    event Redeem(bytes32 indexed _proposalId,\n        address indexed _organization,\n        address indexed _beneficiary,\n        uint256 _amount\n    );\n\n    event RedeemDaoBounty(bytes32 indexed _proposalId,\n        address indexed _organization,\n        address indexed _beneficiary,\n        uint256 _amount\n    );\n\n    event RedeemReputation(bytes32 indexed _proposalId,\n        address indexed _organization,\n        address indexed _beneficiary,\n        uint256 _amount\n    );\n\n    event StateChange(bytes32 indexed _proposalId, ProposalState _proposalState);\n    event GPExecuteProposal(bytes32 indexed _proposalId, ExecutionState _executionState);\n    event ExpirationCallBounty(bytes32 indexed _proposalId, address indexed _beneficiary, uint256 _amount);\n    event ConfidenceLevelChange(bytes32 indexed _proposalId, uint256 _confidenceThreshold);\n\n    mapping(bytes32=>Parameters) public parameters;  // A mapping from hashes to parameters\n    mapping(bytes32=>Proposal) public proposals; // Mapping from the ID of the proposal to the proposal itself.\n    mapping(bytes32=>uint) public orgBoostedProposalsCnt;\n           //organizationId => organization\n    mapping(bytes32        => address     ) public organizations;\n          //organizationId => averageBoostDownstakes\n    mapping(bytes32           => uint256              ) public averagesDownstakesOfBoosted;\n    uint256 constant public NUM_OF_CHOICES = 2;\n    uint256 constant public NO = 2;\n    uint256 constant public YES = 1;\n    uint256 public proposalsCnt; // Total number of proposals\n    IERC20 public stakingToken;\n    address constant private GEN_TOKEN_ADDRESS = 0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf;\n    uint256 constant private MAX_BOOSTED_PROPOSALS = 4096;\n\n    /**\n     * @dev Constructor\n     */\n    constructor(IERC20 _stakingToken) public {\n      //The GEN token (staking token) address is hard coded in the contract by GEN_TOKEN_ADDRESS .\n      //This will work for a network which already hosted the GEN token on this address (e.g mainnet).\n      //If such contract address does not exist in the network (e.g ganache)\n      //the contract will use the _stakingToken param as the\n      //staking token address.\n        if (address(GEN_TOKEN_ADDRESS).isContract()) {\n            stakingToken = IERC20(GEN_TOKEN_ADDRESS);\n        } else {\n            stakingToken = _stakingToken;\n        }\n    }\n\n  /**\n   * @dev Check that the proposal is votable\n   * a proposal is votable if it is in one of the following states:\n   *  PreBoosted,Boosted,QuietEndingPeriod or Queued\n   */\n    modifier votable(bytes32 _proposalId) {\n        require(_isVotable(_proposalId));\n        _;\n    }\n\n    /**\n     * @dev register a new proposal with the given parameters. Every proposal has a unique ID which is being\n     * generated by calculating keccak256 of a incremented counter.\n     * @param _paramsHash parameters hash\n     * @param _proposer address\n     * @param _organization address\n     */\n    function propose(uint256, bytes32 _paramsHash, address _proposer, address _organization)\n        external\n        returns(bytes32)\n    {\n      // solhint-disable-next-line not-rely-on-time\n        require(now > parameters[_paramsHash].activationTime, \"not active yet\");\n        //Check parameters existence.\n        require(parameters[_paramsHash].queuedVoteRequiredPercentage >= 50);\n        // Generate a unique ID:\n        bytes32 proposalId = keccak256(abi.encodePacked(this, proposalsCnt));\n        proposalsCnt = proposalsCnt.add(1);\n         // Open proposal:\n        Proposal memory proposal;\n        proposal.callbacks = msg.sender;\n        proposal.organizationId = keccak256(abi.encodePacked(msg.sender, _organization));\n\n        proposal.state = ProposalState.Queued;\n        // solhint-disable-next-line not-rely-on-time\n        proposal.times[0] = now;//submitted time\n        proposal.currentBoostedVotePeriodLimit = parameters[_paramsHash].boostedVotePeriodLimit;\n        proposal.proposer = _proposer;\n        proposal.winningVote = NO;\n        proposal.paramsHash = _paramsHash;\n        if (organizations[proposal.organizationId] == address(0)) {\n            if (_organization == address(0)) {\n                organizations[proposal.organizationId] = msg.sender;\n            } else {\n                organizations[proposal.organizationId] = _organization;\n            }\n        }\n        //calc dao bounty\n        uint256 daoBounty =\n        parameters[_paramsHash].daoBountyConst.mul(averagesDownstakesOfBoosted[proposal.organizationId]).div(100);\n        if (daoBounty < parameters[_paramsHash].minimumDaoBounty) {\n            proposal.daoBountyRemain = parameters[_paramsHash].minimumDaoBounty;\n        } else {\n            proposal.daoBountyRemain = daoBounty;\n        }\n        proposal.totalStakes = proposal.daoBountyRemain;\n        proposals[proposalId] = proposal;\n        proposals[proposalId].stakes[NO] = proposal.daoBountyRemain;//dao downstake on the proposal\n\n        emit NewProposal(proposalId, organizations[proposal.organizationId], NUM_OF_CHOICES, _proposer, _paramsHash);\n        return proposalId;\n    }\n\n    /**\n      * @dev executeBoosted try to execute a boosted or QuietEndingPeriod proposal if it is expired\n      * @param _proposalId the id of the proposal\n      * @return uint256 expirationCallBounty the bounty amount for the expiration call\n     */\n    function executeBoosted(bytes32 _proposalId) external returns(uint256 expirationCallBounty) {\n        Proposal storage proposal = proposals[_proposalId];\n        require(proposal.state == ProposalState.Boosted || proposal.state == ProposalState.QuietEndingPeriod,\n        \"proposal state in not Boosted nor QuietEndingPeriod\");\n        require(_execute(_proposalId), \"proposal need to expire\");\n        uint256 expirationCallBountyPercentage =\n        // solhint-disable-next-line not-rely-on-time\n        (uint(1).add(now.sub(proposal.currentBoostedVotePeriodLimit.add(proposal.times[1])).div(15)));\n        if (expirationCallBountyPercentage > 100) {\n            expirationCallBountyPercentage = 100;\n        }\n        proposal.expirationCallBountyPercentage = expirationCallBountyPercentage;\n        expirationCallBounty = expirationCallBountyPercentage.mul(proposal.stakes[YES]).div(100);\n        require(stakingToken.transfer(msg.sender, expirationCallBounty), \"transfer to msg.sender failed\");\n        emit ExpirationCallBounty(_proposalId, msg.sender, expirationCallBounty);\n    }\n\n    /**\n     * @dev hash the parameters, save them if necessary, and return the hash value\n     * @param _params a parameters array\n     *    _params[0] - _queuedVoteRequiredPercentage,\n     *    _params[1] - _queuedVotePeriodLimit, //the time limit for a proposal to be in an absolute voting mode.\n     *    _params[2] - _boostedVotePeriodLimit, //the time limit for a proposal to be in an relative voting mode.\n     *    _params[3] - _preBoostedVotePeriodLimit, //the time limit for a proposal to be in an preparation\n     *                  state (stable) before boosted.\n     *    _params[4] -_thresholdConst\n     *    _params[5] -_quietEndingPeriod\n     *    _params[6] -_proposingRepReward\n     *    _params[7] -_votersReputationLossRatio\n     *    _params[8] -_minimumDaoBounty\n     *    _params[9] -_daoBountyConst\n     *    _params[10] -_activationTime\n     * @param _voteOnBehalf - authorized to vote on behalf of others.\n    */\n    function setParameters(\n        uint[11] calldata _params, //use array here due to stack too deep issue.\n        address _voteOnBehalf\n    )\n    external\n    returns(bytes32)\n    {\n        require(_params[0] <= 100 && _params[0] >= 50, \"50 <= queuedVoteRequiredPercentage <= 100\");\n        require(_params[4] <= 16000 && _params[4] > 1000, \"1000 < thresholdConst <= 16000\");\n        require(_params[7] <= 100, \"votersReputationLossRatio <= 100\");\n        require(_params[2] >= _params[5], \"boostedVotePeriodLimit >= quietEndingPeriod\");\n        require(_params[8] > 0, \"minimumDaoBounty should be > 0\");\n        require(_params[9] > 0, \"daoBountyConst should be > 0\");\n\n        bytes32 paramsHash = getParametersHash(_params, _voteOnBehalf);\n        //set a limit for power for a given alpha to prevent overflow\n        uint256 limitExponent = 172;//for alpha less or equal 2\n        uint256 j = 2;\n        for (uint256 i = 2000; i < 16000; i = i*2) {\n            if ((_params[4] > i) && (_params[4] <= i*2)) {\n                limitExponent = limitExponent/j;\n                break;\n            }\n            j++;\n        }\n\n        parameters[paramsHash] = Parameters({\n            queuedVoteRequiredPercentage: _params[0],\n            queuedVotePeriodLimit: _params[1],\n            boostedVotePeriodLimit: _params[2],\n            preBoostedVotePeriodLimit: _params[3],\n            thresholdConst:uint216(_params[4]).fraction(uint216(1000)),\n            limitExponentValue:limitExponent,\n            quietEndingPeriod: _params[5],\n            proposingRepReward: _params[6],\n            votersReputationLossRatio:_params[7],\n            minimumDaoBounty:_params[8],\n            daoBountyConst:_params[9],\n            activationTime:_params[10],\n            voteOnBehalf:_voteOnBehalf\n        });\n        return paramsHash;\n    }\n\n    /**\n     * @dev redeem a reward for a successful stake, vote or proposing.\n     * The function use a beneficiary address as a parameter (and not msg.sender) to enable\n     * users to redeem on behalf of someone else.\n     * @param _proposalId the ID of the proposal\n     * @param _beneficiary - the beneficiary address\n     * @return rewards -\n     *           [0] stakerTokenReward\n     *           [1] voterReputationReward\n     *           [2] proposerReputationReward\n     */\n     // solhint-disable-next-line function-max-lines,code-complexity\n    function redeem(bytes32 _proposalId, address _beneficiary) public returns (uint[3] memory rewards) {\n        Proposal storage proposal = proposals[_proposalId];\n        require((proposal.state == ProposalState.Executed)||(proposal.state == ProposalState.ExpiredInQueue),\n        \"Proposal should be Executed or ExpiredInQueue\");\n        Parameters memory params = parameters[proposal.paramsHash];\n        uint256 lostReputation;\n        if (proposal.winningVote == YES) {\n            lostReputation = proposal.preBoostedVotes[NO];\n        } else {\n            lostReputation = proposal.preBoostedVotes[YES];\n        }\n        lostReputation = (lostReputation.mul(params.votersReputationLossRatio))/100;\n        //as staker\n        Staker storage staker = proposal.stakers[_beneficiary];\n        uint256 totalStakes = proposal.stakes[NO].add(proposal.stakes[YES]);\n        uint256 totalWinningStakes = proposal.stakes[proposal.winningVote];\n\n        if (staker.amount > 0) {\n            uint256 totalStakesLeftAfterCallBounty =\n            totalStakes.sub(proposal.expirationCallBountyPercentage.mul(proposal.stakes[YES]).div(100));\n            if (proposal.state == ProposalState.ExpiredInQueue) {\n                //Stakes of a proposal that expires in Queue are sent back to stakers\n                rewards[0] = staker.amount;\n            } else if (staker.vote == proposal.winningVote) {\n                if (staker.vote == YES) {\n                    if (proposal.daoBounty < totalStakesLeftAfterCallBounty) {\n                        uint256 _totalStakes = totalStakesLeftAfterCallBounty.sub(proposal.daoBounty);\n                        rewards[0] = (staker.amount.mul(_totalStakes))/totalWinningStakes;\n                    }\n                } else {\n                    rewards[0] = (staker.amount.mul(totalStakesLeftAfterCallBounty))/totalWinningStakes;\n                }\n            }\n            staker.amount = 0;\n        }\n            //dao redeem its winnings\n        if (proposal.daoRedeemItsWinnings == false &&\n            _beneficiary == organizations[proposal.organizationId] &&\n            proposal.state != ProposalState.ExpiredInQueue &&\n            proposal.winningVote == NO) {\n            rewards[0] =\n            rewards[0].add((proposal.daoBounty.mul(totalStakes))/totalWinningStakes).sub(proposal.daoBounty);\n            proposal.daoRedeemItsWinnings = true;\n        }\n\n        //as voter\n        Voter storage voter = proposal.voters[_beneficiary];\n        if ((voter.reputation != 0) && (voter.preBoosted)) {\n            if (proposal.state == ProposalState.ExpiredInQueue) {\n              //give back reputation for the voter\n                rewards[1] = ((voter.reputation.mul(params.votersReputationLossRatio))/100);\n            } else if (proposal.winningVote == voter.vote) {\n                rewards[1] = ((voter.reputation.mul(params.votersReputationLossRatio))/100)\n                .add((voter.reputation.mul(lostReputation))/proposal.preBoostedVotes[proposal.winningVote]);\n            }\n            voter.reputation = 0;\n        }\n        //as proposer\n        if ((proposal.proposer == _beneficiary)&&(proposal.winningVote == YES)&&(proposal.proposer != address(0))) {\n            rewards[2] = params.proposingRepReward;\n            proposal.proposer = address(0);\n        }\n        if (rewards[0] != 0) {\n            proposal.totalStakes = proposal.totalStakes.sub(rewards[0]);\n            require(stakingToken.transfer(_beneficiary, rewards[0]), \"transfer to beneficiary failed\");\n            emit Redeem(_proposalId, organizations[proposal.organizationId], _beneficiary, rewards[0]);\n        }\n        if (rewards[1].add(rewards[2]) != 0) {\n            VotingMachineCallbacksInterface(proposal.callbacks)\n            .mintReputation(rewards[1].add(rewards[2]), _beneficiary, _proposalId);\n            emit RedeemReputation(\n            _proposalId,\n            organizations[proposal.organizationId],\n            _beneficiary,\n            rewards[1].add(rewards[2])\n            );\n        }\n    }\n\n    /**\n     * @dev redeemDaoBounty a reward for a successful stake.\n     * The function use a beneficiary address as a parameter (and not msg.sender) to enable\n     * users to redeem on behalf of someone else.\n     * @param _proposalId the ID of the proposal\n     * @param _beneficiary - the beneficiary address\n     * @return redeemedAmount - redeem token amount\n     * @return potentialAmount - potential redeem token amount(if there is enough tokens bounty at the organization )\n     */\n    function redeemDaoBounty(bytes32 _proposalId, address _beneficiary)\n    public\n    returns(uint256 redeemedAmount, uint256 potentialAmount) {\n        Proposal storage proposal = proposals[_proposalId];\n        require(proposal.state == ProposalState.Executed);\n        uint256 totalWinningStakes = proposal.stakes[proposal.winningVote];\n        Staker storage staker = proposal.stakers[_beneficiary];\n        if (\n            (staker.amount4Bounty > 0)&&\n            (staker.vote == proposal.winningVote)&&\n            (proposal.winningVote == YES)&&\n            (totalWinningStakes != 0)) {\n            //as staker\n                potentialAmount = (staker.amount4Bounty * proposal.daoBounty)/totalWinningStakes;\n            }\n        if ((potentialAmount != 0)&&\n            (VotingMachineCallbacksInterface(proposal.callbacks)\n            .balanceOfStakingToken(stakingToken, _proposalId) >= potentialAmount)) {\n            staker.amount4Bounty = 0;\n            proposal.daoBountyRemain = proposal.daoBountyRemain.sub(potentialAmount);\n            require(\n            VotingMachineCallbacksInterface(proposal.callbacks)\n            .stakingTokenTransfer(stakingToken, _beneficiary, potentialAmount, _proposalId));\n            redeemedAmount = potentialAmount;\n            emit RedeemDaoBounty(_proposalId, organizations[proposal.organizationId], _beneficiary, redeemedAmount);\n        }\n    }\n\n    /**\n     * @dev shouldBoost check if a proposal should be shifted to boosted phase.\n     * @param _proposalId the ID of the proposal\n     * @return bool true or false.\n     */\n    function shouldBoost(bytes32 _proposalId) public view returns(bool) {\n        Proposal memory proposal = proposals[_proposalId];\n        return (_score(_proposalId) > threshold(proposal.paramsHash, proposal.organizationId));\n    }\n\n    /**\n     * @dev threshold return the organization's score threshold which required by\n     * a proposal to shift to boosted state.\n     * This threshold is dynamically set and it depend on the number of boosted proposal.\n     * @param _organizationId the organization identifier\n     * @param _paramsHash the organization parameters hash\n     * @return uint256 organization's score threshold as real number.\n     */\n    function threshold(bytes32 _paramsHash, bytes32 _organizationId) public view returns(uint256) {\n        uint256 power = orgBoostedProposalsCnt[_organizationId];\n        Parameters storage params = parameters[_paramsHash];\n\n        if (power > params.limitExponentValue) {\n            power = params.limitExponentValue;\n        }\n\n        return params.thresholdConst.pow(power);\n    }\n\n  /**\n   * @dev hashParameters returns a hash of the given parameters\n   */\n    function getParametersHash(\n        uint[11] memory _params,//use array here due to stack too deep issue.\n        address _voteOnBehalf\n    )\n        public\n        pure\n        returns(bytes32)\n        {\n        //double call to keccak256 to avoid deep stack issue when call with too many params.\n        return keccak256(\n            abi.encodePacked(\n            keccak256(\n            abi.encodePacked(\n                _params[0],\n                _params[1],\n                _params[2],\n                _params[3],\n                _params[4],\n                _params[5],\n                _params[6],\n                _params[7],\n                _params[8],\n                _params[9],\n                _params[10])\n            ),\n            _voteOnBehalf\n        ));\n    }\n\n    /**\n      * @dev execute check if the proposal has been decided, and if so, execute the proposal\n      * @param _proposalId the id of the proposal\n      * @return bool true - the proposal has been executed\n      *              false - otherwise.\n     */\n     // solhint-disable-next-line function-max-lines,code-complexity\n    function _execute(bytes32 _proposalId) internal votable(_proposalId) returns(bool) {\n        Proposal storage proposal = proposals[_proposalId];\n        Parameters memory params = parameters[proposal.paramsHash];\n        Proposal memory tmpProposal = proposal;\n        uint256 totalReputation =\n        VotingMachineCallbacksInterface(proposal.callbacks).getTotalReputationSupply(_proposalId);\n        //first divide by 100 to prevent overflow\n        uint256 executionBar = (totalReputation/100) * params.queuedVoteRequiredPercentage;\n        ExecutionState executionState = ExecutionState.None;\n        uint256 averageDownstakesOfBoosted;\n        uint256 confidenceThreshold;\n\n        if (proposal.votes[proposal.winningVote] > executionBar) {\n         // someone crossed the absolute vote execution bar.\n            if (proposal.state == ProposalState.Queued) {\n                executionState = ExecutionState.QueueBarCrossed;\n            } else if (proposal.state == ProposalState.PreBoosted) {\n                executionState = ExecutionState.PreBoostedBarCrossed;\n            } else {\n                executionState = ExecutionState.BoostedBarCrossed;\n            }\n            proposal.state = ProposalState.Executed;\n        } else {\n            if (proposal.state == ProposalState.Queued) {\n                // solhint-disable-next-line not-rely-on-time\n                if ((now - proposal.times[0]) >= params.queuedVotePeriodLimit) {\n                    proposal.state = ProposalState.ExpiredInQueue;\n                    proposal.winningVote = NO;\n                    executionState = ExecutionState.QueueTimeOut;\n                } else {\n                    confidenceThreshold = threshold(proposal.paramsHash, proposal.organizationId);\n                    if (_score(_proposalId) > confidenceThreshold) {\n                        //change proposal mode to PreBoosted mode.\n                        proposal.state = ProposalState.PreBoosted;\n                        // solhint-disable-next-line not-rely-on-time\n                        proposal.times[2] = now;\n                        proposal.confidenceThreshold = confidenceThreshold;\n                    }\n                }\n            }\n\n            if (proposal.state == ProposalState.PreBoosted) {\n                confidenceThreshold = threshold(proposal.paramsHash, proposal.organizationId);\n              // solhint-disable-next-line not-rely-on-time\n                if ((now - proposal.times[2]) >= params.preBoostedVotePeriodLimit) {\n                    if (_score(_proposalId) > confidenceThreshold) {\n                        if (orgBoostedProposalsCnt[proposal.organizationId] < MAX_BOOSTED_PROPOSALS) {\n                         //change proposal mode to Boosted mode.\n                            proposal.state = ProposalState.Boosted;\n                         // solhint-disable-next-line not-rely-on-time\n                            proposal.times[1] = now;\n                            orgBoostedProposalsCnt[proposal.organizationId]++;\n                         //add a value to average -> average = average + ((value - average) / nbValues)\n                            averageDownstakesOfBoosted = averagesDownstakesOfBoosted[proposal.organizationId];\n                          // solium-disable-next-line indentation\n                            averagesDownstakesOfBoosted[proposal.organizationId] =\n                                uint256(int256(averageDownstakesOfBoosted) +\n                                ((int256(proposal.stakes[NO])-int256(averageDownstakesOfBoosted))/\n                                int256(orgBoostedProposalsCnt[proposal.organizationId])));\n                        }\n                    } else {\n                        proposal.state = ProposalState.Queued;\n                    }\n                } else { //check the Confidence level is stable\n                    uint256 proposalScore = _score(_proposalId);\n                    if (proposalScore <= proposal.confidenceThreshold.min(confidenceThreshold)) {\n                        proposal.state = ProposalState.Queued;\n                    } else if (proposal.confidenceThreshold > proposalScore) {\n                        proposal.confidenceThreshold = confidenceThreshold;\n                        emit ConfidenceLevelChange(_proposalId, confidenceThreshold);\n                    }\n                }\n            }\n        }\n\n        if ((proposal.state == ProposalState.Boosted) ||\n            (proposal.state == ProposalState.QuietEndingPeriod)) {\n            // solhint-disable-next-line not-rely-on-time\n            if ((now - proposal.times[1]) >= proposal.currentBoostedVotePeriodLimit) {\n                proposal.state = ProposalState.Executed;\n                executionState = ExecutionState.BoostedTimeOut;\n            }\n        }\n\n        if (executionState != ExecutionState.None) {\n            if ((executionState == ExecutionState.BoostedTimeOut) ||\n                (executionState == ExecutionState.BoostedBarCrossed)) {\n                orgBoostedProposalsCnt[tmpProposal.organizationId] =\n                orgBoostedProposalsCnt[tmpProposal.organizationId].sub(1);\n                //remove a value from average = ((average * nbValues) - value) / (nbValues - 1);\n                uint256 boostedProposals = orgBoostedProposalsCnt[tmpProposal.organizationId];\n                if (boostedProposals == 0) {\n                    averagesDownstakesOfBoosted[proposal.organizationId] = 0;\n                } else {\n                    averageDownstakesOfBoosted = averagesDownstakesOfBoosted[proposal.organizationId];\n                    averagesDownstakesOfBoosted[proposal.organizationId] =\n                    (averageDownstakesOfBoosted.mul(boostedProposals+1).sub(proposal.stakes[NO]))/boostedProposals;\n                }\n            }\n            emit ExecuteProposal(\n            _proposalId,\n            organizations[proposal.organizationId],\n            proposal.winningVote,\n            totalReputation\n            );\n            emit GPExecuteProposal(_proposalId, executionState);\n            ProposalExecuteInterface(proposal.callbacks).executeProposal(_proposalId, int(proposal.winningVote));\n            proposal.daoBounty = proposal.daoBountyRemain;\n        }\n        if (tmpProposal.state != proposal.state) {\n            emit StateChange(_proposalId, proposal.state);\n        }\n        return (executionState != ExecutionState.None);\n    }\n\n    /**\n     * @dev staking function\n     * @param _proposalId id of the proposal\n     * @param _vote  NO(2) or YES(1).\n     * @param _amount the betting amount\n     * @return bool true - the proposal has been executed\n     *              false - otherwise.\n     */\n    function _stake(bytes32 _proposalId, uint256 _vote, uint256 _amount, address _staker) internal returns(bool) {\n        // 0 is not a valid vote.\n        require(_vote <= NUM_OF_CHOICES && _vote > 0, \"wrong vote value\");\n        require(_amount > 0, \"staking amount should be >0\");\n\n        if (_execute(_proposalId)) {\n            return true;\n        }\n        Proposal storage proposal = proposals[_proposalId];\n\n        if ((proposal.state != ProposalState.PreBoosted) &&\n            (proposal.state != ProposalState.Queued)) {\n            return false;\n        }\n\n        // enable to increase stake only on the previous stake vote\n        Staker storage staker = proposal.stakers[_staker];\n        if ((staker.amount > 0) && (staker.vote != _vote)) {\n            return false;\n        }\n\n        uint256 amount = _amount;\n        require(stakingToken.transferFrom(_staker, address(this), amount), \"fail transfer from staker\");\n        proposal.totalStakes = proposal.totalStakes.add(amount); //update totalRedeemableStakes\n        staker.amount = staker.amount.add(amount);\n        //This is to prevent average downstakes calculation overflow\n        //Note that any how GEN cap is 100000000 ether.\n        require(staker.amount <= 0x100000000000000000000000000000000, \"staking amount is too high\");\n        require(proposal.totalStakes <= 0x100000000000000000000000000000000, \"total stakes is too high\");\n\n        if (_vote == YES) {\n            staker.amount4Bounty = staker.amount4Bounty.add(amount);\n        }\n        staker.vote = _vote;\n\n        proposal.stakes[_vote] = amount.add(proposal.stakes[_vote]);\n        emit Stake(_proposalId, organizations[proposal.organizationId], _staker, _vote, _amount);\n        return _execute(_proposalId);\n    }\n\n    /**\n     * @dev Vote for a proposal, if the voter already voted, cancel the last vote and set a new one instead\n     * @param _proposalId id of the proposal\n     * @param _voter used in case the vote is cast for someone else\n     * @param _vote a value between 0 to and the proposal's number of choices.\n     * @param _rep how many reputation the voter would like to stake for this vote.\n     *         if  _rep==0 so the voter full reputation will be use.\n     * @return true in case of proposal execution otherwise false\n     * throws if proposal is not open or if it has been executed\n     * NB: executes the proposal if a decision has been reached\n     */\n     // solhint-disable-next-line function-max-lines,code-complexity\n    function internalVote(bytes32 _proposalId, address _voter, uint256 _vote, uint256 _rep) internal returns(bool) {\n        require(_vote <= NUM_OF_CHOICES && _vote > 0, \"0 < _vote <= 2\");\n        if (_execute(_proposalId)) {\n            return true;\n        }\n\n        Parameters memory params = parameters[proposals[_proposalId].paramsHash];\n        Proposal storage proposal = proposals[_proposalId];\n\n        // Check voter has enough reputation:\n        uint256 reputation = VotingMachineCallbacksInterface(proposal.callbacks).reputationOf(_voter, _proposalId);\n        require(reputation > 0, \"_voter must have reputation\");\n        require(reputation >= _rep, \"reputation >= _rep\");\n        uint256 rep = _rep;\n        if (rep == 0) {\n            rep = reputation;\n        }\n        // If this voter has already voted, return false.\n        if (proposal.voters[_voter].reputation != 0) {\n            return false;\n        }\n        // The voting itself:\n        proposal.votes[_vote] = rep.add(proposal.votes[_vote]);\n        //check if the current winningVote changed or there is a tie.\n        //for the case there is a tie the current winningVote set to NO.\n        if ((proposal.votes[_vote] > proposal.votes[proposal.winningVote]) ||\n            ((proposal.votes[NO] == proposal.votes[proposal.winningVote]) &&\n            proposal.winningVote == YES)) {\n            if (proposal.state == ProposalState.Boosted &&\n            // solhint-disable-next-line not-rely-on-time\n                ((now - proposal.times[1]) >= (params.boostedVotePeriodLimit - params.quietEndingPeriod))||\n                proposal.state == ProposalState.QuietEndingPeriod) {\n                //quietEndingPeriod\n                if (proposal.state != ProposalState.QuietEndingPeriod) {\n                    proposal.currentBoostedVotePeriodLimit = params.quietEndingPeriod;\n                    proposal.state = ProposalState.QuietEndingPeriod;\n                }\n                // solhint-disable-next-line not-rely-on-time\n                proposal.times[1] = now;\n            }\n            proposal.winningVote = _vote;\n        }\n        proposal.voters[_voter] = Voter({\n            reputation: rep,\n            vote: _vote,\n            preBoosted:((proposal.state == ProposalState.PreBoosted) || (proposal.state == ProposalState.Queued))\n        });\n        if ((proposal.state == ProposalState.PreBoosted) || (proposal.state == ProposalState.Queued)) {\n            proposal.preBoostedVotes[_vote] = rep.add(proposal.preBoostedVotes[_vote]);\n            uint256 reputationDeposit = (params.votersReputationLossRatio.mul(rep))/100;\n            VotingMachineCallbacksInterface(proposal.callbacks).burnReputation(reputationDeposit, _voter, _proposalId);\n        }\n        emit VoteProposal(_proposalId, organizations[proposal.organizationId], _voter, _vote, rep);\n        return _execute(_proposalId);\n    }\n\n    /**\n     * @dev _score return the proposal score (Confidence level)\n     * For dual choice proposal S = (S+)/(S-)\n     * @param _proposalId the ID of the proposal\n     * @return uint256 proposal score as real number.\n     */\n    function _score(bytes32 _proposalId) internal view returns(uint256) {\n        Proposal storage proposal = proposals[_proposalId];\n        //proposal.stakes[NO] cannot be zero as the dao downstake > 0 for each proposal.\n        return uint216(proposal.stakes[YES]).fraction(uint216(proposal.stakes[NO]));\n    }\n\n    /**\n      * @dev _isVotable check if the proposal is votable\n      * @param _proposalId the ID of the proposal\n      * @return bool true or false\n    */\n    function _isVotable(bytes32 _proposalId) internal view returns(bool) {\n        ProposalState pState = proposals[_proposalId].state;\n        return ((pState == ProposalState.PreBoosted)||\n                (pState == ProposalState.Boosted)||\n                (pState == ProposalState.QuietEndingPeriod)||\n                (pState == ProposalState.Queued)\n        );\n    }\n}\n",
  "sourcePath": "@daostack/infra/contracts/votingMachines/GenesisProtocolLogic.sol",
  "ast": {
    "absolutePath": "@daostack/infra/contracts/votingMachines/GenesisProtocolLogic.sol",
    "exportedSymbols": {
      "GenesisProtocolLogic": [
        20436
      ]
    },
    "id": 20437,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 17869,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:66"
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/IntVoteInterface.sol",
        "file": "./IntVoteInterface.sol",
        "id": 17870,
        "nodeType": "ImportDirective",
        "scope": 20437,
        "sourceUnit": 20572,
        "src": "25:32:66",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/libs/RealMath.sol",
        "file": "../libs/RealMath.sol",
        "id": 17872,
        "nodeType": "ImportDirective",
        "scope": 20437,
        "sourceUnit": 16578,
        "src": "58:48:66",
        "symbolAliases": [
          {
            "foreign": 17871,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/VotingMachineCallbacksInterface.sol",
        "file": "./VotingMachineCallbacksInterface.sol",
        "id": 17873,
        "nodeType": "ImportDirective",
        "scope": 20437,
        "sourceUnit": 20648,
        "src": "107:47:66",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/ProposalExecuteInterface.sol",
        "file": "./ProposalExecuteInterface.sol",
        "id": 17874,
        "nodeType": "ImportDirective",
        "scope": 20437,
        "sourceUnit": 20584,
        "src": "155:40:66",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 17875,
        "nodeType": "ImportDirective",
        "scope": 20437,
        "sourceUnit": 21309,
        "src": "196:59:66",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/Math.sol",
        "file": "openzeppelin-solidity/contracts/math/Math.sol",
        "id": 17876,
        "nodeType": "ImportDirective",
        "scope": 20437,
        "sourceUnit": 21181,
        "src": "256:55:66",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "id": 17877,
        "nodeType": "ImportDirective",
        "scope": 20437,
        "sourceUnit": 22138,
        "src": "312:64:66",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/utils/Address.sol",
        "file": "openzeppelin-solidity/contracts/utils/Address.sol",
        "id": 17878,
        "nodeType": "ImportDirective",
        "scope": 20437,
        "sourceUnit": 22157,
        "src": "377:59:66",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 17879,
              "name": "IntVoteInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 20571,
              "src": "564:16:66",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IntVoteInterface_$20571",
                "typeString": "contract IntVoteInterface"
              }
            },
            "id": 17880,
            "nodeType": "InheritanceSpecifier",
            "src": "564:16:66"
          }
        ],
        "contractDependencies": [
          20571
        ],
        "contractKind": "contract",
        "documentation": "@title GenesisProtocol implementation -an organization's voting machine scheme.",
        "fullyImplemented": false,
        "id": 20436,
        "linearizedBaseContracts": [
          20436,
          20571
        ],
        "name": "GenesisProtocolLogic",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 17883,
            "libraryName": {
              "contractScope": null,
              "id": 17881,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21308,
              "src": "593:8:66",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$21308",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "587:27:66",
            "typeName": {
              "id": 17882,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "606:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 17886,
            "libraryName": {
              "contractScope": null,
              "id": 17884,
              "name": "Math",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21180,
              "src": "625:4:66",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Math_$21180",
                "typeString": "library Math"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "619:23:66",
            "typeName": {
              "id": 17885,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "634:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 17889,
            "libraryName": {
              "contractScope": null,
              "id": 17887,
              "name": "RealMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 16577,
              "src": "653:8:66",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RealMath_$16577",
                "typeString": "library RealMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "647:27:66",
            "typeName": {
              "id": 17888,
              "name": "uint216",
              "nodeType": "ElementaryTypeName",
              "src": "666:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint216",
                "typeString": "uint216"
              }
            }
          },
          {
            "id": 17892,
            "libraryName": {
              "contractScope": null,
              "id": 17890,
              "name": "RealMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 16577,
              "src": "685:8:66",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RealMath_$16577",
                "typeString": "library RealMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "679:27:66",
            "typeName": {
              "id": 17891,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "698:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 17895,
            "libraryName": {
              "contractScope": null,
              "id": 17893,
              "name": "Address",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22156,
              "src": "717:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Address_$22156",
                "typeString": "library Address"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "711:26:66",
            "typeName": {
              "id": 17894,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "729:7:66",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            }
          },
          {
            "canonicalName": "GenesisProtocolLogic.ProposalState",
            "id": 17903,
            "members": [
              {
                "id": 17896,
                "name": "None",
                "nodeType": "EnumValue",
                "src": "764:4:66"
              },
              {
                "id": 17897,
                "name": "ExpiredInQueue",
                "nodeType": "EnumValue",
                "src": "770:14:66"
              },
              {
                "id": 17898,
                "name": "Executed",
                "nodeType": "EnumValue",
                "src": "786:8:66"
              },
              {
                "id": 17899,
                "name": "Queued",
                "nodeType": "EnumValue",
                "src": "796:6:66"
              },
              {
                "id": 17900,
                "name": "PreBoosted",
                "nodeType": "EnumValue",
                "src": "804:10:66"
              },
              {
                "id": 17901,
                "name": "Boosted",
                "nodeType": "EnumValue",
                "src": "816:7:66"
              },
              {
                "id": 17902,
                "name": "QuietEndingPeriod",
                "nodeType": "EnumValue",
                "src": "825:17:66"
              }
            ],
            "name": "ProposalState",
            "nodeType": "EnumDefinition",
            "src": "743:100:66"
          },
          {
            "canonicalName": "GenesisProtocolLogic.ExecutionState",
            "id": 17910,
            "members": [
              {
                "id": 17904,
                "name": "None",
                "nodeType": "EnumValue",
                "src": "870:4:66"
              },
              {
                "id": 17905,
                "name": "QueueBarCrossed",
                "nodeType": "EnumValue",
                "src": "876:15:66"
              },
              {
                "id": 17906,
                "name": "QueueTimeOut",
                "nodeType": "EnumValue",
                "src": "893:12:66"
              },
              {
                "id": 17907,
                "name": "PreBoostedBarCrossed",
                "nodeType": "EnumValue",
                "src": "907:20:66"
              },
              {
                "id": 17908,
                "name": "BoostedTimeOut",
                "nodeType": "EnumValue",
                "src": "929:14:66"
              },
              {
                "id": 17909,
                "name": "BoostedBarCrossed",
                "nodeType": "EnumValue",
                "src": "945:17:66"
              }
            ],
            "name": "ExecutionState",
            "nodeType": "EnumDefinition",
            "src": "848:115:66"
          },
          {
            "canonicalName": "GenesisProtocolLogic.Parameters",
            "id": 17937,
            "members": [
              {
                "constant": false,
                "id": 17912,
                "name": "queuedVoteRequiredPercentage",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1029:36:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17911,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1029:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17914,
                "name": "queuedVotePeriodLimit",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1113:29:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17913,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1113:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17916,
                "name": "boostedVotePeriodLimit",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1218:30:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17915,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1218:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17918,
                "name": "preBoostedVotePeriodLimit",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1311:33:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17917,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1311:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17920,
                "name": "thresholdConst",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1485:22:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17919,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1485:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17922,
                "name": "limitExponentValue",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1647:26:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17921,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1647:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17924,
                "name": "quietEndingPeriod",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1815:25:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17923,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1815:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17926,
                "name": "proposingRepReward",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1872:26:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17925,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1872:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17928,
                "name": "votersReputationLossRatio",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1937:33:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17927,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1937:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17930,
                "name": "minimumDaoBounty",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "2110:24:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17929,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2110:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17932,
                "name": "daoBountyConst",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "2144:22:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17931,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2144:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17934,
                "name": "activationTime",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "2332:22:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17933,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2332:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17936,
                "name": "voteOnBehalf",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "2521:20:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 17935,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2521:7:66",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Parameters",
            "nodeType": "StructDefinition",
            "scope": 20436,
            "src": "1001:1547:66",
            "visibility": "public"
          },
          {
            "canonicalName": "GenesisProtocolLogic.Voter",
            "id": 17944,
            "members": [
              {
                "constant": false,
                "id": 17939,
                "name": "vote",
                "nodeType": "VariableDeclaration",
                "scope": 17944,
                "src": "2577:12:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17938,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2577:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17941,
                "name": "reputation",
                "nodeType": "VariableDeclaration",
                "scope": 17944,
                "src": "2616:18:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17940,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2616:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17943,
                "name": "preBoosted",
                "nodeType": "VariableDeclaration",
                "scope": 17944,
                "src": "2676:15:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 17942,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "2676:4:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Voter",
            "nodeType": "StructDefinition",
            "scope": 20436,
            "src": "2554:144:66",
            "visibility": "public"
          },
          {
            "canonicalName": "GenesisProtocolLogic.Staker",
            "id": 17951,
            "members": [
              {
                "constant": false,
                "id": 17946,
                "name": "vote",
                "nodeType": "VariableDeclaration",
                "scope": 17951,
                "src": "2728:12:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17945,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2728:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17948,
                "name": "amount",
                "nodeType": "VariableDeclaration",
                "scope": 17951,
                "src": "2767:14:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17947,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2767:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17950,
                "name": "amount4Bounty",
                "nodeType": "VariableDeclaration",
                "scope": 17951,
                "src": "2819:21:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17949,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2819:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Staker",
            "nodeType": "StructDefinition",
            "scope": 20436,
            "src": "2704:206:66",
            "visibility": "public"
          },
          {
            "canonicalName": "GenesisProtocolLogic.Proposal",
            "id": 18002,
            "members": [
              {
                "constant": false,
                "id": 17953,
                "name": "organizationId",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "2942:22:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 17952,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "2942:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17955,
                "name": "callbacks",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3039:17:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 17954,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "3039:7:66",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17957,
                "name": "state",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3115:19:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 17956,
                  "name": "ProposalState",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 17903,
                  "src": "3115:13:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17959,
                "name": "winningVote",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3144:19:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17958,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3144:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17961,
                "name": "proposer",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3193:16:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 17960,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "3193:7:66",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17963,
                "name": "currentBoostedVotePeriodLimit",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3313:37:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17962,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3313:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17965,
                "name": "paramsHash",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3360:18:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 17964,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "3360:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17967,
                "name": "daoBountyRemain",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3388:23:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17966,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3388:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17969,
                "name": "daoBounty",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3496:17:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17968,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3496:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17971,
                "name": "totalStakes",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3523:19:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17970,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3523:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17973,
                "name": "confidenceThreshold",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3620:27:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17972,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3620:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17975,
                "name": "expirationCallBountyPercentage",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3747:38:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17974,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3747:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17979,
                "name": "times",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3795:13:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                  "typeString": "uint256[3]"
                },
                "typeName": {
                  "baseType": {
                    "id": 17976,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3795:4:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17978,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 17977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3800:1:66",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3_by_1",
                      "typeString": "int_const 3"
                    },
                    "value": "3"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "3795:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                    "typeString": "uint256[3]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17981,
                "name": "daoRedeemItsWinnings",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3954:25:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 17980,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "3954:4:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17985,
                "name": "votes",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "4026:40:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 17984,
                  "keyType": {
                    "id": 17982,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4034:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4026:34:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 17983,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4048:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17989,
                "name": "preBoostedVotes",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "4113:50:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 17988,
                  "keyType": {
                    "id": 17986,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4121:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4113:34:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 17987,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4135:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17993,
                "name": "voters",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "4207:37:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$17944_storage_$",
                  "typeString": "mapping(address => struct GenesisProtocolLogic.Voter)"
                },
                "typeName": {
                  "id": 17992,
                  "keyType": {
                    "id": 17990,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4215:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4207:30:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$17944_storage_$",
                    "typeString": "mapping(address => struct GenesisProtocolLogic.Voter)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 17991,
                    "name": "Voter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17944,
                    "src": "4227:5:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                      "typeString": "struct GenesisProtocolLogic.Voter"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17997,
                "name": "stakes",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "4289:41:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 17996,
                  "keyType": {
                    "id": 17994,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4297:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4289:34:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 17995,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4311:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 18001,
                "name": "stakers",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "4372:38:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$17951_storage_$",
                  "typeString": "mapping(address => struct GenesisProtocolLogic.Staker)"
                },
                "typeName": {
                  "id": 18000,
                  "keyType": {
                    "id": 17998,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4380:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4372:30:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$17951_storage_$",
                    "typeString": "mapping(address => struct GenesisProtocolLogic.Staker)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 17999,
                    "name": "Staker",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17951,
                    "src": "4392:6:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                      "typeString": "struct GenesisProtocolLogic.Staker"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Proposal",
            "nodeType": "StructDefinition",
            "scope": 20436,
            "src": "2916:1501:66",
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18014,
            "name": "Stake",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18013,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18004,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18014,
                  "src": "4435:27:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18003,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4435:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18006,
                  "indexed": true,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 18014,
                  "src": "4472:29:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18005,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4472:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18008,
                  "indexed": true,
                  "name": "_staker",
                  "nodeType": "VariableDeclaration",
                  "scope": 18014,
                  "src": "4511:23:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18007,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4511:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18010,
                  "indexed": false,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 18014,
                  "src": "4544:13:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18009,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4544:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18012,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 18014,
                  "src": "4567:15:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18011,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4567:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4434:154:66"
            },
            "src": "4423:166:66"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18024,
            "name": "Redeem",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18023,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18016,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18024,
                  "src": "4608:27:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18015,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4608:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18018,
                  "indexed": true,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 18024,
                  "src": "4645:29:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18017,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4645:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18020,
                  "indexed": true,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 18024,
                  "src": "4684:28:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18019,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4684:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18022,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 18024,
                  "src": "4722:15:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18021,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4722:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4607:136:66"
            },
            "src": "4595:149:66"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18034,
            "name": "RedeemDaoBounty",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18033,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18026,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18034,
                  "src": "4772:27:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18025,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4772:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18028,
                  "indexed": true,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 18034,
                  "src": "4809:29:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18027,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4809:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18030,
                  "indexed": true,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 18034,
                  "src": "4848:28:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18029,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4848:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18032,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 18034,
                  "src": "4886:15:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18031,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4886:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4771:136:66"
            },
            "src": "4750:158:66"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18044,
            "name": "RedeemReputation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18043,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18036,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18044,
                  "src": "4937:27:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18035,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4937:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18038,
                  "indexed": true,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 18044,
                  "src": "4974:29:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18037,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4974:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18040,
                  "indexed": true,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 18044,
                  "src": "5013:28:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18039,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5013:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18042,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 18044,
                  "src": "5051:15:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18041,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5051:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4936:136:66"
            },
            "src": "4914:159:66"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18050,
            "name": "StateChange",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18049,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18046,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18050,
                  "src": "5097:27:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18045,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5097:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18048,
                  "indexed": false,
                  "name": "_proposalState",
                  "nodeType": "VariableDeclaration",
                  "scope": 18050,
                  "src": "5126:28:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 18047,
                    "name": "ProposalState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17903,
                    "src": "5126:13:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5096:59:66"
            },
            "src": "5079:77:66"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18056,
            "name": "GPExecuteProposal",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18055,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18052,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18056,
                  "src": "5185:27:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18051,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5185:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18054,
                  "indexed": false,
                  "name": "_executionState",
                  "nodeType": "VariableDeclaration",
                  "scope": 18056,
                  "src": "5214:30:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 18053,
                    "name": "ExecutionState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17910,
                    "src": "5214:14:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ExecutionState_$17910",
                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5184:61:66"
            },
            "src": "5161:85:66"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18064,
            "name": "ExpirationCallBounty",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18063,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18058,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18064,
                  "src": "5278:27:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18057,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5278:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18060,
                  "indexed": true,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 18064,
                  "src": "5307:28:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18059,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5307:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18062,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 18064,
                  "src": "5337:15:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18061,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5337:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5277:76:66"
            },
            "src": "5251:103:66"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18070,
            "name": "ConfidenceLevelChange",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18069,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18066,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18070,
                  "src": "5387:27:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18065,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5387:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18068,
                  "indexed": false,
                  "name": "_confidenceThreshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 18070,
                  "src": "5416:28:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18067,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5416:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5386:59:66"
            },
            "src": "5359:87:66"
          },
          {
            "constant": false,
            "id": 18074,
            "name": "parameters",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "5452:46:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
              "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters)"
            },
            "typeName": {
              "id": 18073,
              "keyType": {
                "id": 18071,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5460:7:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5452:28:66",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters)"
              },
              "valueType": {
                "contractScope": null,
                "id": 18072,
                "name": "Parameters",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 17937,
                "src": "5469:10:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                  "typeString": "struct GenesisProtocolLogic.Parameters"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18078,
            "name": "proposals",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "5544:43:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
              "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal)"
            },
            "typeName": {
              "id": 18077,
              "keyType": {
                "id": 18075,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5552:7:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5544:26:66",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal)"
              },
              "valueType": {
                "contractScope": null,
                "id": 18076,
                "name": "Proposal",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 18002,
                "src": "5561:8:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                  "typeString": "struct GenesisProtocolLogic.Proposal"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18082,
            "name": "orgBoostedProposalsCnt",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "5656:52:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 18081,
              "keyType": {
                "id": 18079,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5664:7:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5656:22:66",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 18080,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5673:4:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18086,
            "name": "organizations",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "5758:60:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 18085,
              "keyType": {
                "id": 18083,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5766:7:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5758:39:66",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 18084,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "5784:7:66",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18090,
            "name": "averagesDownstakesOfBoosted",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "5877:86:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 18089,
              "keyType": {
                "id": 18087,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5885:7:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5877:51:66",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 18088,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5906:7:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 18093,
            "name": "NUM_OF_CHOICES",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "5969:42:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 18091,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "5969:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32",
              "id": 18092,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6010:1:66",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 18096,
            "name": "NO",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "6017:30:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 18094,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "6017:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32",
              "id": 18095,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6046:1:66",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 18099,
            "name": "YES",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "6053:31:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 18097,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "6053:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 18098,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6083:1:66",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18101,
            "name": "proposalsCnt",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "6090:27:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 18100,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "6090:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18103,
            "name": "stakingToken",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "6152:26:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IERC20_$22137",
              "typeString": "contract IERC20"
            },
            "typeName": {
              "contractScope": null,
              "id": 18102,
              "name": "IERC20",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22137,
              "src": "6152:6:66",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20_$22137",
                "typeString": "contract IERC20"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 18106,
            "name": "GEN_TOKEN_ADDRESS",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "6184:87:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 18104,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "6184:7:66",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307835343346663232374636344161313765413133324266393838366341623544423535444341646466",
              "id": 18105,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6229:42:66",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_address_payable",
                "typeString": "address payable"
              },
              "value": "0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 18109,
            "name": "MAX_BOOSTED_PROPOSALS",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "6277:53:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 18107,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "6277:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34303936",
              "id": 18108,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6326:4:66",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4096_by_1",
                "typeString": "int_const 4096"
              },
              "value": "4096"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 18132,
              "nodeType": "Block",
              "src": "6418:556:66",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18115,
                            "name": "GEN_TOKEN_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18106,
                            "src": "6811:17:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 18114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6803:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 18116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6803:26:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 18117,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22155,
                      "src": "6803:37:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 18118,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6803:39:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 18130,
                    "nodeType": "Block",
                    "src": "6915:53:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18128,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18126,
                            "name": "stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18103,
                            "src": "6929:12:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$22137",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18127,
                            "name": "_stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18111,
                            "src": "6944:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$22137",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "6929:28:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$22137",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 18129,
                        "nodeType": "ExpressionStatement",
                        "src": "6929:28:66"
                      }
                    ]
                  },
                  "id": 18131,
                  "nodeType": "IfStatement",
                  "src": "6799:169:66",
                  "trueBody": {
                    "id": 18125,
                    "nodeType": "Block",
                    "src": "6844:65:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18119,
                            "name": "stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18103,
                            "src": "6858:12:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$22137",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 18121,
                                "name": "GEN_TOKEN_ADDRESS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18106,
                                "src": "6880:17:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 18120,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22137,
                              "src": "6873:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$22137_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 18122,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6873:25:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$22137",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "6858:40:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$22137",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 18124,
                        "nodeType": "ExpressionStatement",
                        "src": "6858:40:66"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Constructor",
            "id": 18133,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18112,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18111,
                  "name": "_stakingToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 18133,
                  "src": "6389:20:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$22137",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 18110,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22137,
                    "src": "6389:6:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$22137",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6388:22:66"
            },
            "returnParameters": {
              "id": 18113,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6418:0:66"
            },
            "scope": 20436,
            "src": "6377:597:66",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18144,
              "nodeType": "Block",
              "src": "7196:60:66",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18139,
                            "name": "_proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18135,
                            "src": "7225:11:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 18138,
                          "name": "_isVotable",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20435,
                          "src": "7214:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 18140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7214:23:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 18137,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "7206:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 18141,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7206:32:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18142,
                  "nodeType": "ExpressionStatement",
                  "src": "7206:32:66"
                },
                {
                  "id": 18143,
                  "nodeType": "PlaceholderStatement",
                  "src": "7248:1:66"
                }
              ]
            },
            "documentation": "@dev Check that the proposal is votable\na proposal is votable if it is in one of the following states:\n PreBoosted,Boosted,QuietEndingPeriod or Queued",
            "id": 18145,
            "name": "votable",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 18136,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18135,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18145,
                  "src": "7175:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18134,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7175:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7174:21:66"
            },
            "src": "7158:98:66",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18368,
              "nodeType": "Block",
              "src": "7700:2008:66",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18159,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22173,
                          "src": "7770:3:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18160,
                              "name": "parameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18074,
                              "src": "7776:10:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                                "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                              }
                            },
                            "id": 18162,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 18161,
                              "name": "_paramsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18149,
                              "src": "7787:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7776:23:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                              "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                            }
                          },
                          "id": 18163,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "activationTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17934,
                          "src": "7776:38:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7770:44:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f742061637469766520796574",
                        "id": 18165,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7816:16:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f30c2c4eef761b63d78da11427f8e9c88d014c48e08e70db1400926a3cd70480",
                          "typeString": "literal_string \"not active yet\""
                        },
                        "value": "not active yet"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f30c2c4eef761b63d78da11427f8e9c88d014c48e08e70db1400926a3cd70480",
                          "typeString": "literal_string \"not active yet\""
                        }
                      ],
                      "id": 18158,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "7762:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7762:71:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18167,
                  "nodeType": "ExpressionStatement",
                  "src": "7762:71:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18169,
                              "name": "parameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18074,
                              "src": "7889:10:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                                "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                              }
                            },
                            "id": 18171,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 18170,
                              "name": "_paramsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18149,
                              "src": "7900:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7889:23:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                              "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                            }
                          },
                          "id": 18172,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "queuedVoteRequiredPercentage",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17912,
                          "src": "7889:52:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3530",
                          "id": 18173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7945:2:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_50_by_1",
                            "typeString": "int_const 50"
                          },
                          "value": "50"
                        },
                        "src": "7889:58:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 18168,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "7881:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 18175,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7881:67:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18176,
                  "nodeType": "ExpressionStatement",
                  "src": "7881:67:66"
                },
                {
                  "assignments": [
                    18178
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18178,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 18368,
                      "src": "7991:18:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 18177,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7991:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18186,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18182,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22229,
                            "src": "8039:4:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GenesisProtocolLogic_$20436",
                              "typeString": "contract GenesisProtocolLogic"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18183,
                            "name": "proposalsCnt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18101,
                            "src": "8045:12:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_GenesisProtocolLogic_$20436",
                              "typeString": "contract GenesisProtocolLogic"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 18180,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22158,
                            "src": "8022:3:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8022:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 18184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8022:36:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18179,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22165,
                      "src": "8012:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 18185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8012:47:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7991:68:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 18187,
                      "name": "proposalsCnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18101,
                      "src": "8069:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 18190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8101:1:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 18188,
                          "name": "proposalsCnt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18101,
                          "src": "8084:12:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18189,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "8084:16:66",
                        "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": 18191,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8084:19:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8069:34:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18193,
                  "nodeType": "ExpressionStatement",
                  "src": "8069:34:66"
                },
                {
                  "assignments": [
                    18195
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18195,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 18368,
                      "src": "8140:24:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 18194,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "8140:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18196,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8140:24:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18197,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "8174:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18199,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "callbacks",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17955,
                      "src": "8174:18:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18200,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22171,
                        "src": "8195:3:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 18201,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8195:10:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "8174:31:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 18203,
                  "nodeType": "ExpressionStatement",
                  "src": "8174:31:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18215,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18204,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "8215:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18206,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "organizationId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17953,
                      "src": "8215:23:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18210,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22171,
                                "src": "8268:3:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 18211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8268:10:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18212,
                              "name": "_organization",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18153,
                              "src": "8280:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18208,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22158,
                              "src": "8251:3:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 18209,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8251:16:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 18213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8251:43:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 18207,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22165,
                        "src": "8241:9:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 18214,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8241:54:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "8215:80:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 18216,
                  "nodeType": "ExpressionStatement",
                  "src": "8215:80:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18222,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18217,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "8306:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18219,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17957,
                      "src": "8306:14:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18220,
                        "name": "ProposalState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17903,
                        "src": "8323:13:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                          "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                        }
                      },
                      "id": 18221,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Queued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8323:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      }
                    },
                    "src": "8306:37:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                    }
                  },
                  "id": 18223,
                  "nodeType": "ExpressionStatement",
                  "src": "8306:37:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18224,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18195,
                          "src": "8407:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal memory"
                          }
                        },
                        "id": 18227,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "times",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17979,
                        "src": "8407:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory",
                          "typeString": "uint256[3] memory"
                        }
                      },
                      "id": 18228,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 18226,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8422:1:66",
                        "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": "8407:17:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18229,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22173,
                      "src": "8427:3:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8407:23:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18231,
                  "nodeType": "ExpressionStatement",
                  "src": "8407:23:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18239,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18232,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "8456:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18234,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentBoostedVotePeriodLimit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17963,
                      "src": "8456:38:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 18235,
                          "name": "parameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18074,
                          "src": "8497:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                            "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                          }
                        },
                        "id": 18237,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 18236,
                          "name": "_paramsHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18149,
                          "src": "8508:11:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8497:23:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                          "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                        }
                      },
                      "id": 18238,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "boostedVotePeriodLimit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17916,
                      "src": "8497:46:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8456:87:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18240,
                  "nodeType": "ExpressionStatement",
                  "src": "8456:87:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18241,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "8553:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18243,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "proposer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17961,
                      "src": "8553:17:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18244,
                      "name": "_proposer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18151,
                      "src": "8573:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "8553:29:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 18246,
                  "nodeType": "ExpressionStatement",
                  "src": "8553:29:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18247,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "8592:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18249,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "winningVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17959,
                      "src": "8592:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18250,
                      "name": "NO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18096,
                      "src": "8615:2:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8592:25:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18252,
                  "nodeType": "ExpressionStatement",
                  "src": "8592:25:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18253,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "8627:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18255,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17965,
                      "src": "8627:19:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18256,
                      "name": "_paramsHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18149,
                      "src": "8649:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "8627:33:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 18258,
                  "nodeType": "ExpressionStatement",
                  "src": "8627:33:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 18266,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 18259,
                        "name": "organizations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18086,
                        "src": "8674:13:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 18262,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18260,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18195,
                          "src": "8688:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal memory"
                          }
                        },
                        "id": 18261,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "organizationId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17953,
                        "src": "8688:23:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8674:38:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 18264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8724:1:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 18263,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8716:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 18265,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8716:10:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "8674:52:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 18291,
                  "nodeType": "IfStatement",
                  "src": "8670:292:66",
                  "trueBody": {
                    "id": 18290,
                    "nodeType": "Block",
                    "src": "8728:234:66",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 18271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 18267,
                            "name": "_organization",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18153,
                            "src": "8746:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 18269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8771:1:66",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 18268,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8763:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 18270,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8763:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "8746:27:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 18288,
                          "nodeType": "Block",
                          "src": "8865:87:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18286,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18281,
                                    "name": "organizations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18086,
                                    "src": "8883:13:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 18284,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18282,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18195,
                                      "src": "8897:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                      }
                                    },
                                    "id": 18283,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17953,
                                    "src": "8897:23:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8883:38:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 18285,
                                  "name": "_organization",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18153,
                                  "src": "8924:13:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8883:54:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 18287,
                              "nodeType": "ExpressionStatement",
                              "src": "8883:54:66"
                            }
                          ]
                        },
                        "id": 18289,
                        "nodeType": "IfStatement",
                        "src": "8742:210:66",
                        "trueBody": {
                          "id": 18280,
                          "nodeType": "Block",
                          "src": "8775:84:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18272,
                                    "name": "organizations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18086,
                                    "src": "8793:13:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 18275,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18273,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18195,
                                      "src": "8807:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                      }
                                    },
                                    "id": 18274,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17953,
                                    "src": "8807:23:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8793:38:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18276,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22171,
                                    "src": "8834:3:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 18277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8834:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "8793:51:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 18279,
                              "nodeType": "ExpressionStatement",
                              "src": "8793:51:66"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    18293
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18293,
                      "name": "daoBounty",
                      "nodeType": "VariableDeclaration",
                      "scope": 18368,
                      "src": "8997:17:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18292,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8997:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18307,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "313030",
                        "id": 18305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9126:3:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        },
                        "value": "100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18299,
                              "name": "averagesDownstakesOfBoosted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18090,
                              "src": "9068:27:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 18302,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18300,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18195,
                                "src": "9096:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                }
                              },
                              "id": 18301,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "organizationId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17953,
                              "src": "9096:23:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9068:52:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 18294,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18074,
                                "src": "9025:10:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                                  "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                                }
                              },
                              "id": 18296,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 18295,
                                "name": "_paramsHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18149,
                                "src": "9036:11:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9025:23:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                                "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                              }
                            },
                            "id": 18297,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "daoBountyConst",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17932,
                            "src": "9025:38:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 21215,
                          "src": "9025:42:66",
                          "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": 18303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9025:96:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 18304,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21239,
                      "src": "9025:100:66",
                      "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": 18306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9025:105:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8997:133:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18313,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 18308,
                      "name": "daoBounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18293,
                      "src": "9144:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 18309,
                          "name": "parameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18074,
                          "src": "9156:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                            "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                          }
                        },
                        "id": 18311,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 18310,
                          "name": "_paramsHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18149,
                          "src": "9167:11:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9156:23:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                          "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                        }
                      },
                      "id": 18312,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "minimumDaoBounty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17930,
                      "src": "9156:40:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9144:52:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 18330,
                    "nodeType": "Block",
                    "src": "9296:61:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18324,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18195,
                              "src": "9310:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal memory"
                              }
                            },
                            "id": 18326,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoBountyRemain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17967,
                            "src": "9310:24:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18327,
                            "name": "daoBounty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18293,
                            "src": "9337:9:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9310:36:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18329,
                        "nodeType": "ExpressionStatement",
                        "src": "9310:36:66"
                      }
                    ]
                  },
                  "id": 18331,
                  "nodeType": "IfStatement",
                  "src": "9140:217:66",
                  "trueBody": {
                    "id": 18323,
                    "nodeType": "Block",
                    "src": "9198:92:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18314,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18195,
                              "src": "9212:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal memory"
                              }
                            },
                            "id": 18316,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoBountyRemain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17967,
                            "src": "9212:24:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 18317,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18074,
                                "src": "9239:10:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                                  "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                                }
                              },
                              "id": 18319,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 18318,
                                "name": "_paramsHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18149,
                                "src": "9250:11:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9239:23:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                                "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                              }
                            },
                            "id": 18320,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "minimumDaoBounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17930,
                            "src": "9239:40:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9212:67:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18322,
                        "nodeType": "ExpressionStatement",
                        "src": "9212:67:66"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18337,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18332,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "9366:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18334,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalStakes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17971,
                      "src": "9366:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18335,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "9389:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18336,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "daoBountyRemain",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17967,
                      "src": "9389:24:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9366:47:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18338,
                  "nodeType": "ExpressionStatement",
                  "src": "9366:47:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18343,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 18339,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18078,
                        "src": "9423:9:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                          "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                        }
                      },
                      "id": 18341,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 18340,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18178,
                        "src": "9433:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9423:21:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                        "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18342,
                      "name": "proposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18195,
                      "src": "9447:8:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal memory"
                      }
                    },
                    "src": "9423:32:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "id": 18344,
                  "nodeType": "ExpressionStatement",
                  "src": "9423:32:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18353,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18345,
                            "name": "proposals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18078,
                            "src": "9465:9:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                              "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                            }
                          },
                          "id": 18347,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 18346,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18178,
                            "src": "9475:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9465:21:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                          }
                        },
                        "id": 18348,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17997,
                        "src": "9465:28:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 18350,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 18349,
                        "name": "NO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18096,
                        "src": "9494:2:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9465:32:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18351,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "9500:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18352,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "daoBountyRemain",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17967,
                      "src": "9500:24:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9465:59:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18354,
                  "nodeType": "ExpressionStatement",
                  "src": "9465:59:66"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18356,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18178,
                        "src": "9583:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 18357,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18086,
                          "src": "9595:13:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 18360,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18358,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18195,
                            "src": "9609:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal memory"
                            }
                          },
                          "id": 18359,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17953,
                          "src": "9609:23:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9595:38:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18361,
                        "name": "NUM_OF_CHOICES",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18093,
                        "src": "9635:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18362,
                        "name": "_proposer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18151,
                        "src": "9651:9:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18363,
                        "name": "_paramsHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18149,
                        "src": "9662:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 18355,
                      "name": "NewProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20468,
                      "src": "9571:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,address,uint256,address,bytes32)"
                      }
                    },
                    "id": 18364,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9571:103:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18365,
                  "nodeType": "EmitStatement",
                  "src": "9566:108:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18366,
                    "name": "proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18178,
                    "src": "9691:10:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 18157,
                  "id": 18367,
                  "nodeType": "Return",
                  "src": "9684:17:66"
                }
              ]
            },
            "documentation": "@dev register a new proposal with the given parameters. Every proposal has a unique ID which is being\ngenerated by calculating keccak256 of a incremented counter.\n@param _paramsHash parameters hash\n@param _proposer address\n@param _organization address",
            "id": 18369,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "propose",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18154,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18147,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18369,
                  "src": "7582:7:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18146,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7582:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18149,
                  "name": "_paramsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 18369,
                  "src": "7591:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18148,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7591:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18151,
                  "name": "_proposer",
                  "nodeType": "VariableDeclaration",
                  "scope": 18369,
                  "src": "7612:17:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18150,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7612:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18153,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 18369,
                  "src": "7631:21:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18152,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7631:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7581:72:66"
            },
            "returnParameters": {
              "id": 18157,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18156,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18369,
                  "src": "7687:7:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18155,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7687:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7686:9:66"
            },
            "scope": 20436,
            "src": "7565:2143:66",
            "stateMutability": "nonpayable",
            "superFunction": 20517,
            "visibility": "external"
          },
          {
            "body": {
              "id": 18472,
              "nodeType": "Block",
              "src": "10059:995:66",
              "statements": [
                {
                  "assignments": [
                    18377
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18377,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 18472,
                      "src": "10069:25:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 18376,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "10069:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18381,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 18378,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18078,
                      "src": "10097:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 18380,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 18379,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18371,
                      "src": "10107:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10097:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10069:50:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 18393,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 18387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18383,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18377,
                              "src": "10137:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 18384,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "10137:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18385,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "10155:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 18386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Boosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10155:21:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "10137:39:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 18392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18388,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18377,
                              "src": "10180:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 18389,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "10180:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18390,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "10198:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 18391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "QuietEndingPeriod",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10198:31:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "10180:49:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "10137:92:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "70726f706f73616c20737461746520696e206e6f7420426f6f73746564206e6f72205175696574456e64696e67506572696f64",
                        "id": 18394,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10239:53:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d12753c56f593192768acab33c56c3c76e99c56e3892b0d2f229882577785553",
                          "typeString": "literal_string \"proposal state in not Boosted nor QuietEndingPeriod\""
                        },
                        "value": "proposal state in not Boosted nor QuietEndingPeriod"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d12753c56f593192768acab33c56c3c76e99c56e3892b0d2f229882577785553",
                          "typeString": "literal_string \"proposal state in not Boosted nor QuietEndingPeriod\""
                        }
                      ],
                      "id": 18382,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "10129:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18395,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10129:164:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18396,
                  "nodeType": "ExpressionStatement",
                  "src": "10129:164:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18399,
                            "name": "_proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18371,
                            "src": "10320:11:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 18398,
                          "name": "_execute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19885,
                          "src": "10311:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) returns (bool)"
                          }
                        },
                        "id": 18400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10311:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "70726f706f73616c206e65656420746f20657870697265",
                        "id": 18401,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10334:25:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_194736d0946e0cd4d131aa98afe9f266adc8d4f15ccac91b5a140d100c4a55cc",
                          "typeString": "literal_string \"proposal need to expire\""
                        },
                        "value": "proposal need to expire"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_194736d0946e0cd4d131aa98afe9f266adc8d4f15ccac91b5a140d100c4a55cc",
                          "typeString": "literal_string \"proposal need to expire\""
                        }
                      ],
                      "id": 18397,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "10303:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10303:57:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18403,
                  "nodeType": "ExpressionStatement",
                  "src": "10303:57:66"
                },
                {
                  "assignments": [
                    18405
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18405,
                      "name": "expirationCallBountyPercentage",
                      "nodeType": "VariableDeclaration",
                      "scope": 18472,
                      "src": "10370:38:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18404,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10370:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18426,
                  "initialValue": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "3135",
                                "id": 18422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10561:2:66",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_15_by_1",
                                  "typeString": "int_const 15"
                                },
                                "value": "15"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_15_by_1",
                                  "typeString": "int_const 15"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 18415,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18377,
                                            "src": "10537:8:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 18416,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "times",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17979,
                                          "src": "10537:14:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                            "typeString": "uint256[3] storage ref"
                                          }
                                        },
                                        "id": 18418,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 18417,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10552:1:66",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10537:17:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 18412,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18377,
                                          "src": "10494:8:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 18413,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "currentBoostedVotePeriodLimit",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17963,
                                        "src": "10494:38:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 18414,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 21287,
                                      "src": "10494:42:66",
                                      "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": 18419,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10494:61:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18410,
                                    "name": "now",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22173,
                                    "src": "10486:3:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18411,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 21263,
                                  "src": "10486:7:66",
                                  "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": 18420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10486:70:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18421,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21239,
                              "src": "10486:74:66",
                              "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": 18423,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10486:78:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 18407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10479:1:66",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 18406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10474:4:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint"
                            },
                            "id": 18408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10474:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 21287,
                          "src": "10474:11:66",
                          "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": 18424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10474:91:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 18425,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "10473:93:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10370:196:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18429,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 18427,
                      "name": "expirationCallBountyPercentage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18405,
                      "src": "10580:30:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "313030",
                      "id": 18428,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10613:3:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_100_by_1",
                        "typeString": "int_const 100"
                      },
                      "value": "100"
                    },
                    "src": "10580:36:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 18435,
                  "nodeType": "IfStatement",
                  "src": "10576:103:66",
                  "trueBody": {
                    "id": 18434,
                    "nodeType": "Block",
                    "src": "10618:61:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18430,
                            "name": "expirationCallBountyPercentage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18405,
                            "src": "10632:30:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 18431,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10665:3:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "10632:36:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18433,
                        "nodeType": "ExpressionStatement",
                        "src": "10632:36:66"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18440,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18436,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18377,
                        "src": "10688:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 18438,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "expirationCallBountyPercentage",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17975,
                      "src": "10688:39:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18439,
                      "name": "expirationCallBountyPercentage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18405,
                      "src": "10730:30:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10688:72:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18441,
                  "nodeType": "ExpressionStatement",
                  "src": "10688:72:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 18442,
                      "name": "expirationCallBounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18374,
                      "src": "10770:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "313030",
                          "id": 18451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10854:3:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100_by_1",
                            "typeString": "int_const 100"
                          },
                          "value": "100"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_100_by_1",
                            "typeString": "int_const 100"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18445,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18377,
                                  "src": "10828:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 18446,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "stakes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17997,
                                "src": "10828:15:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 18448,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 18447,
                                "name": "YES",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18099,
                                "src": "10844:3:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10828:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18443,
                              "name": "expirationCallBountyPercentage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18405,
                              "src": "10793:30:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 18444,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21215,
                            "src": "10793:34:66",
                            "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": 18449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10793:56:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "div",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21239,
                        "src": "10793:60:66",
                        "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": 18452,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10793:65:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10770:88:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18454,
                  "nodeType": "ExpressionStatement",
                  "src": "10770:88:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18458,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22171,
                              "src": "10898:3:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 18459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10898:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18460,
                            "name": "expirationCallBounty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18374,
                            "src": "10910:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 18456,
                            "name": "stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18103,
                            "src": "10876:12:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$22137",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 18457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22079,
                          "src": "10876:21:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 18461,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10876:55:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7472616e7366657220746f206d73672e73656e646572206661696c6564",
                        "id": 18462,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10933:31:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b85ceb8ee02c2d2292ab8271b7e4c009f72c6e882f9263faea1f89e089f0781d",
                          "typeString": "literal_string \"transfer to msg.sender failed\""
                        },
                        "value": "transfer to msg.sender failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b85ceb8ee02c2d2292ab8271b7e4c009f72c6e882f9263faea1f89e089f0781d",
                          "typeString": "literal_string \"transfer to msg.sender failed\""
                        }
                      ],
                      "id": 18455,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "10868:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18463,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10868:97:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18464,
                  "nodeType": "ExpressionStatement",
                  "src": "10868:97:66"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18466,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18371,
                        "src": "11001:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18467,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22171,
                          "src": "11014:3:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 18468,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11014:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18469,
                        "name": "expirationCallBounty",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18374,
                        "src": "11026:20:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 18465,
                      "name": "ExpirationCallBounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18064,
                      "src": "10980:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,uint256)"
                      }
                    },
                    "id": 18470,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10980:67:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18471,
                  "nodeType": "EmitStatement",
                  "src": "10975:72:66"
                }
              ]
            },
            "documentation": "@dev executeBoosted try to execute a boosted or QuietEndingPeriod proposal if it is expired\n@param _proposalId the id of the proposal\n@return uint256 expirationCallBounty the bounty amount for the expiration call",
            "id": 18473,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "executeBoosted",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18372,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18371,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18473,
                  "src": "9991:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18370,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9991:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9990:21:66"
            },
            "returnParameters": {
              "id": 18375,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18374,
                  "name": "expirationCallBounty",
                  "nodeType": "VariableDeclaration",
                  "scope": 18473,
                  "src": "10029:28:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18373,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10029:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10028:30:66"
            },
            "scope": 20436,
            "src": "9967:1087:66",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 18660,
              "nodeType": "Block",
              "src": "12178:1650:66",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 18495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18485,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18477,
                              "src": "12196:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                "typeString": "uint256[11] calldata"
                              }
                            },
                            "id": 18487,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12204:1:66",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12196:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 18488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12210:3:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "12196:17:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18490,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18477,
                              "src": "12217:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                "typeString": "uint256[11] calldata"
                              }
                            },
                            "id": 18492,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18491,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12225:1:66",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12217:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "3530",
                            "id": 18493,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12231:2:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_50_by_1",
                              "typeString": "int_const 50"
                            },
                            "value": "50"
                          },
                          "src": "12217:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12196:37:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "3530203c3d20717565756564566f7465526571756972656450657263656e74616765203c3d20313030",
                        "id": 18496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12235:43:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_85b9f97a846fa88401fdf1381ec2257f07804de0b75677db4c2efd7a2ce62825",
                          "typeString": "literal_string \"50 <= queuedVoteRequiredPercentage <= 100\""
                        },
                        "value": "50 <= queuedVoteRequiredPercentage <= 100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_85b9f97a846fa88401fdf1381ec2257f07804de0b75677db4c2efd7a2ce62825",
                          "typeString": "literal_string \"50 <= queuedVoteRequiredPercentage <= 100\""
                        }
                      ],
                      "id": 18484,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "12188:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12188:91:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18498,
                  "nodeType": "ExpressionStatement",
                  "src": "12188:91:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 18510,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18500,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18477,
                              "src": "12297:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                "typeString": "uint256[11] calldata"
                              }
                            },
                            "id": 18502,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "34",
                              "id": 18501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12305:1:66",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12297:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "3136303030",
                            "id": 18503,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12311:5:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_16000_by_1",
                              "typeString": "int_const 16000"
                            },
                            "value": "16000"
                          },
                          "src": "12297:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18505,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18477,
                              "src": "12320:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                "typeString": "uint256[11] calldata"
                              }
                            },
                            "id": 18507,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "34",
                              "id": 18506,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12328:1:66",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12320:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31303030",
                            "id": 18508,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12333:4:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000_by_1",
                              "typeString": "int_const 1000"
                            },
                            "value": "1000"
                          },
                          "src": "12320:17:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12297:40:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31303030203c207468726573686f6c64436f6e7374203c3d203136303030",
                        "id": 18511,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12339:32:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_daddeca132c5a35f259acc956e39955b67e80315dbd0a39292b027685447fb58",
                          "typeString": "literal_string \"1000 < thresholdConst <= 16000\""
                        },
                        "value": "1000 < thresholdConst <= 16000"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_daddeca132c5a35f259acc956e39955b67e80315dbd0a39292b027685447fb58",
                          "typeString": "literal_string \"1000 < thresholdConst <= 16000\""
                        }
                      ],
                      "id": 18499,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "12289:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12289:83:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18513,
                  "nodeType": "ExpressionStatement",
                  "src": "12289:83:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18515,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "12390:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18517,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "37",
                            "id": 18516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12398:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_7_by_1",
                              "typeString": "int_const 7"
                            },
                            "value": "7"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12390:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313030",
                          "id": 18518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12404:3:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100_by_1",
                            "typeString": "int_const 100"
                          },
                          "value": "100"
                        },
                        "src": "12390:17:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "766f7465727352657075746174696f6e4c6f7373526174696f203c3d20313030",
                        "id": 18520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12409:34:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b9a8ef96bdbf8c6f5867a44627f3e55d258417d72b6eee622f0941021e48ccc2",
                          "typeString": "literal_string \"votersReputationLossRatio <= 100\""
                        },
                        "value": "votersReputationLossRatio <= 100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b9a8ef96bdbf8c6f5867a44627f3e55d258417d72b6eee622f0941021e48ccc2",
                          "typeString": "literal_string \"votersReputationLossRatio <= 100\""
                        }
                      ],
                      "id": 18514,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "12382:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18521,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12382:62:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18522,
                  "nodeType": "ExpressionStatement",
                  "src": "12382:62:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18524,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "12462:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18526,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 18525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12470:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12462:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18527,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "12476:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18529,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 18528,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12484:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12476:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12462:24:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "626f6f73746564566f7465506572696f644c696d6974203e3d207175696574456e64696e67506572696f64",
                        "id": 18531,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12488:45:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_609d5e4f75f374c5d875da125e2b6693907dc86231a6a7783cbd890bcb51f823",
                          "typeString": "literal_string \"boostedVotePeriodLimit >= quietEndingPeriod\""
                        },
                        "value": "boostedVotePeriodLimit >= quietEndingPeriod"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_609d5e4f75f374c5d875da125e2b6693907dc86231a6a7783cbd890bcb51f823",
                          "typeString": "literal_string \"boostedVotePeriodLimit >= quietEndingPeriod\""
                        }
                      ],
                      "id": 18523,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "12454:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18532,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12454:80:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18533,
                  "nodeType": "ExpressionStatement",
                  "src": "12454:80:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18539,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18535,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "12552:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18537,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 18536,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12560:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12552:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 18538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12565:1:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "12552:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6d696e696d756d44616f426f756e74792073686f756c64206265203e2030",
                        "id": 18540,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12568:32:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9a2fb70181672a535ab2f25b5eb32644096d5daab13cf3cb8ef2cfc2561af9a3",
                          "typeString": "literal_string \"minimumDaoBounty should be > 0\""
                        },
                        "value": "minimumDaoBounty should be > 0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9a2fb70181672a535ab2f25b5eb32644096d5daab13cf3cb8ef2cfc2561af9a3",
                          "typeString": "literal_string \"minimumDaoBounty should be > 0\""
                        }
                      ],
                      "id": 18534,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "12544:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18541,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12544:57:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18542,
                  "nodeType": "ExpressionStatement",
                  "src": "12544:57:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18548,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18544,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "12619:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18546,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "39",
                            "id": 18545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12627:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_9_by_1",
                              "typeString": "int_const 9"
                            },
                            "value": "9"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12619:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 18547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12632:1:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "12619:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "64616f426f756e7479436f6e73742073686f756c64206265203e2030",
                        "id": 18549,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12635:30:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_996a184b88eb3effd28e9cef20fafeecddc7873295cdda23c6bb178b43ff4ba3",
                          "typeString": "literal_string \"daoBountyConst should be > 0\""
                        },
                        "value": "daoBountyConst should be > 0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_996a184b88eb3effd28e9cef20fafeecddc7873295cdda23c6bb178b43ff4ba3",
                          "typeString": "literal_string \"daoBountyConst should be > 0\""
                        }
                      ],
                      "id": 18543,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "12611:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12611:55:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18551,
                  "nodeType": "ExpressionStatement",
                  "src": "12611:55:66"
                },
                {
                  "assignments": [
                    18553
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18553,
                      "name": "paramsHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 18660,
                      "src": "12677:18:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 18552,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "12677:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18558,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18555,
                        "name": "_params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18477,
                        "src": "12716:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                          "typeString": "uint256[11] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18556,
                        "name": "_voteOnBehalf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18479,
                        "src": "12725:13:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                          "typeString": "uint256[11] calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 18554,
                      "name": "getParametersHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19381,
                      "src": "12698:17:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint256_$11_memory_ptr_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (uint256[11] memory,address) pure returns (bytes32)"
                      }
                    },
                    "id": 18557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12698:41:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12677:62:66"
                },
                {
                  "assignments": [
                    18560
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18560,
                      "name": "limitExponent",
                      "nodeType": "VariableDeclaration",
                      "scope": 18660,
                      "src": "12819:21:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18559,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12819:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18562,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "313732",
                    "id": 18561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12843:3:66",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_172_by_1",
                      "typeString": "int_const 172"
                    },
                    "value": "172"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12819:27:66"
                },
                {
                  "assignments": [
                    18564
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18564,
                      "name": "j",
                      "nodeType": "VariableDeclaration",
                      "scope": 18660,
                      "src": "12883:9:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18563,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12883:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18566,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 18565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12895:1:66",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12883:13:66"
                },
                {
                  "body": {
                    "id": 18607,
                    "nodeType": "Block",
                    "src": "12949:173:66",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 18594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18580,
                                    "name": "_params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18477,
                                    "src": "12968:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                      "typeString": "uint256[11] calldata"
                                    }
                                  },
                                  "id": 18582,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "34",
                                    "id": 18581,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12976:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12968:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 18583,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18568,
                                  "src": "12981:1:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12968:14:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 18585,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12967:16:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18592,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18586,
                                    "name": "_params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18477,
                                    "src": "12988:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                      "typeString": "uint256[11] calldata"
                                    }
                                  },
                                  "id": 18588,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "34",
                                    "id": 18587,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12996:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12988:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 18591,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 18589,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18568,
                                    "src": "13002:1:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 18590,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13004:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "13002:3:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12988:17:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 18593,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12987:19:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12967:39:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 18603,
                        "nodeType": "IfStatement",
                        "src": "12963:132:66",
                        "trueBody": {
                          "id": 18602,
                          "nodeType": "Block",
                          "src": "13008:87:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18599,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 18595,
                                  "name": "limitExponent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18560,
                                  "src": "13026:13:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 18598,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 18596,
                                    "name": "limitExponent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18560,
                                    "src": "13042:13:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 18597,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18564,
                                    "src": "13056:1:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "13042:15:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13026:31:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18600,
                              "nodeType": "ExpressionStatement",
                              "src": "13026:31:66"
                            },
                            {
                              "id": 18601,
                              "nodeType": "Break",
                              "src": "13075:5:66"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "13108:3:66",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 18604,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18564,
                            "src": "13108:1:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18606,
                        "nodeType": "ExpressionStatement",
                        "src": "13108:3:66"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18573,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 18571,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18568,
                      "src": "12929:1:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3136303030",
                      "id": 18572,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12933:5:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_16000_by_1",
                        "typeString": "int_const 16000"
                      },
                      "value": "16000"
                    },
                    "src": "12929:9:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 18608,
                  "initializationExpression": {
                    "assignments": [
                      18568
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 18568,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 18608,
                        "src": "12911:9:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18567,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12911:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 18570,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "32303030",
                      "id": 18569,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12923:4:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2000_by_1",
                        "typeString": "int_const 2000"
                      },
                      "value": "2000"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "12911:16:66"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 18578,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 18574,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18568,
                        "src": "12940:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18577,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18575,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18568,
                          "src": "12944:1:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 18576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12946:1:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "12944:3:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "12940:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 18579,
                    "nodeType": "ExpressionStatement",
                    "src": "12940:7:66"
                  },
                  "nodeType": "ForStatement",
                  "src": "12906:216:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18656,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 18609,
                        "name": "parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18074,
                        "src": "13132:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                          "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                        }
                      },
                      "id": 18611,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 18610,
                        "name": "paramsHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18553,
                        "src": "13143:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13132:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                        "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18613,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13212:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18615,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 18614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13220:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13212:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18616,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13259:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18618,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 18617,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13267:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13259:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18619,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13307:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18621,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 18620,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13315:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13307:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18622,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13358:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18624,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "33",
                            "id": 18623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13366:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13358:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31303030",
                                  "id": 18632,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13434:4:66",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  },
                                  "value": "1000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  }
                                ],
                                "id": 18631,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13426:7:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint216_$",
                                  "typeString": "type(uint216)"
                                },
                                "typeName": "uint216"
                              },
                              "id": 18633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13426:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint216",
                                "typeString": "uint216"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint216",
                                "typeString": "uint216"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18626,
                                    "name": "_params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18477,
                                    "src": "13405:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                      "typeString": "uint256[11] calldata"
                                    }
                                  },
                                  "id": 18628,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "34",
                                    "id": 18627,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13413:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13405:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 18625,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13397:7:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint216_$",
                                  "typeString": "type(uint216)"
                                },
                                "typeName": "uint216"
                              },
                              "id": 18629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13397:19:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint216",
                                "typeString": "uint216"
                              }
                            },
                            "id": 18630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fraction",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16523,
                            "src": "13397:28:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint216_$_t_uint216_$returns$_t_uint256_$bound_to$_t_uint216_$",
                              "typeString": "function (uint216,uint216) pure returns (uint256)"
                            }
                          },
                          "id": 18634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13397:43:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 18635,
                          "name": "limitExponent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18560,
                          "src": "13473:13:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18636,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13519:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18638,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 18637,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13527:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13519:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18639,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13563:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18641,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "36",
                            "id": 18640,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13571:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_6_by_1",
                              "typeString": "int_const 6"
                            },
                            "value": "6"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13563:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18642,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13613:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18644,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "37",
                            "id": 18643,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13621:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_7_by_1",
                              "typeString": "int_const 7"
                            },
                            "value": "7"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13613:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18645,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13654:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18647,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 18646,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13662:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13654:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18648,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13693:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18650,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "39",
                            "id": 18649,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13701:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_9_by_1",
                              "typeString": "int_const 9"
                            },
                            "value": "9"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13693:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18651,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13732:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18653,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 18652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13740:2:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13732:11:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 18654,
                          "name": "_voteOnBehalf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18479,
                          "src": "13770:13:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 18612,
                        "name": "Parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17937,
                        "src": "13157:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Parameters_$17937_storage_ptr_$",
                          "typeString": "type(struct GenesisProtocolLogic.Parameters storage pointer)"
                        }
                      },
                      "id": 18655,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "queuedVoteRequiredPercentage",
                        "queuedVotePeriodLimit",
                        "boostedVotePeriodLimit",
                        "preBoostedVotePeriodLimit",
                        "thresholdConst",
                        "limitExponentValue",
                        "quietEndingPeriod",
                        "proposingRepReward",
                        "votersReputationLossRatio",
                        "minimumDaoBounty",
                        "daoBountyConst",
                        "activationTime",
                        "voteOnBehalf"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "13157:637:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$17937_memory",
                        "typeString": "struct GenesisProtocolLogic.Parameters memory"
                      }
                    },
                    "src": "13132:662:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "id": 18657,
                  "nodeType": "ExpressionStatement",
                  "src": "13132:662:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18658,
                    "name": "paramsHash",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18553,
                    "src": "13811:10:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 18483,
                  "id": 18659,
                  "nodeType": "Return",
                  "src": "13804:17:66"
                }
              ]
            },
            "documentation": "@dev hash the parameters, save them if necessary, and return the hash value\n@param _params a parameters array\n   _params[0] - _queuedVoteRequiredPercentage,\n   _params[1] - _queuedVotePeriodLimit, //the time limit for a proposal to be in an absolute voting mode.\n   _params[2] - _boostedVotePeriodLimit, //the time limit for a proposal to be in an relative voting mode.\n   _params[3] - _preBoostedVotePeriodLimit, //the time limit for a proposal to be in an preparation\n                 state (stable) before boosted.\n   _params[4] -_thresholdConst\n   _params[5] -_quietEndingPeriod\n   _params[6] -_proposingRepReward\n   _params[7] -_votersReputationLossRatio\n   _params[8] -_minimumDaoBounty\n   _params[9] -_daoBountyConst\n   _params[10] -_activationTime\n@param _voteOnBehalf - authorized to vote on behalf of others.",
            "id": 18661,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setParameters",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18480,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18477,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 18661,
                  "src": "12031:25:66",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                    "typeString": "uint256[11]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 18474,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "12031:4:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 18476,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "3131",
                      "id": 18475,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12036:2:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_11_by_1",
                        "typeString": "int_const 11"
                      },
                      "value": "11"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "12031:8:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$11_storage_ptr",
                      "typeString": "uint256[11]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18479,
                  "name": "_voteOnBehalf",
                  "nodeType": "VariableDeclaration",
                  "scope": 18661,
                  "src": "12112:21:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18478,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12112:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12021:118:66"
            },
            "returnParameters": {
              "id": 18483,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18482,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18661,
                  "src": "12165:7:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18481,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12165:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12164:9:66"
            },
            "scope": 20436,
            "src": "11999:1829:66",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 19120,
              "nodeType": "Block",
              "src": "14486:3933:66",
              "statements": [
                {
                  "assignments": [
                    18673
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18673,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 19120,
                      "src": "14496:25:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 18672,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "14496:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18677,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 18674,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18078,
                      "src": "14524:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 18676,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 18675,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18663,
                      "src": "14534:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14524:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14496:50:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 18691,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              },
                              "id": 18683,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18679,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18673,
                                  "src": "14565:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 18680,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "state",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17957,
                                "src": "14565:14:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18681,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17903,
                                  "src": "14583:13:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                    "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                  }
                                },
                                "id": 18682,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Executed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "14583:22:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "src": "14565:40:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 18684,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "14564:42:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              },
                              "id": 18689,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18685,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18673,
                                  "src": "14609:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 18686,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "state",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17957,
                                "src": "14609:14:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18687,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17903,
                                  "src": "14627:13:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                    "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                  }
                                },
                                "id": 18688,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "ExpiredInQueue",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "14627:28:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "src": "14609:46:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 18690,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "14608:48:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "14564:92:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "50726f706f73616c2073686f756c64206265204578656375746564206f722045787069726564496e5175657565",
                        "id": 18692,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14666:47:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4e192fc0c0c06bbf22b55d1039c663d5c5a02b944d66c77797d07c1d4ad01bb5",
                          "typeString": "literal_string \"Proposal should be Executed or ExpiredInQueue\""
                        },
                        "value": "Proposal should be Executed or ExpiredInQueue"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4e192fc0c0c06bbf22b55d1039c663d5c5a02b944d66c77797d07c1d4ad01bb5",
                          "typeString": "literal_string \"Proposal should be Executed or ExpiredInQueue\""
                        }
                      ],
                      "id": 18678,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "14556:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18693,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14556:158:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18694,
                  "nodeType": "ExpressionStatement",
                  "src": "14556:158:66"
                },
                {
                  "assignments": [
                    18696
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18696,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 19120,
                      "src": "14724:24:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 18695,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17937,
                        "src": "14724:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18701,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 18697,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18074,
                      "src": "14751:10:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                      }
                    },
                    "id": 18700,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18698,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18673,
                        "src": "14762:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 18699,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17965,
                      "src": "14762:19:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14751:31:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14724:58:66"
                },
                {
                  "assignments": [
                    18703
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18703,
                      "name": "lostReputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 19120,
                      "src": "14792:22:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18702,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14792:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18704,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14792:22:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18708,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18705,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18673,
                        "src": "14828:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 18706,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "winningVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17959,
                      "src": "14828:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 18707,
                      "name": "YES",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18099,
                      "src": "14852:3:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14828:27:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 18724,
                    "nodeType": "Block",
                    "src": "14933:71:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18717,
                            "name": "lostReputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18703,
                            "src": "14947:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18718,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18673,
                                "src": "14964:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 18719,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "preBoostedVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17989,
                              "src": "14964:24:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 18721,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 18720,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18099,
                              "src": "14989:3:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14964:29:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14947:46:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18723,
                        "nodeType": "ExpressionStatement",
                        "src": "14947:46:66"
                      }
                    ]
                  },
                  "id": 18725,
                  "nodeType": "IfStatement",
                  "src": "14824:180:66",
                  "trueBody": {
                    "id": 18716,
                    "nodeType": "Block",
                    "src": "14857:70:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18709,
                            "name": "lostReputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18703,
                            "src": "14871:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18710,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18673,
                                "src": "14888:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 18711,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "preBoostedVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17989,
                              "src": "14888:24:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 18713,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 18712,
                              "name": "NO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18096,
                              "src": "14913:2:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14888:28:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14871:45:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18715,
                        "nodeType": "ExpressionStatement",
                        "src": "14871:45:66"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18735,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 18726,
                      "name": "lostReputation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18703,
                      "src": "15013:14:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 18734,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18729,
                                  "name": "params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18696,
                                  "src": "15050:6:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                  }
                                },
                                "id": 18730,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "votersReputationLossRatio",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17928,
                                "src": "15050:32:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 18727,
                                "name": "lostReputation",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18703,
                                "src": "15031:14:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18728,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21215,
                              "src": "15031:18:66",
                              "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": 18731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15031:52:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 18732,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "15030:54:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "313030",
                        "id": 18733,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15085:3:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        },
                        "value": "100"
                      },
                      "src": "15030:58:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15013:75:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18736,
                  "nodeType": "ExpressionStatement",
                  "src": "15013:75:66"
                },
                {
                  "assignments": [
                    18738
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18738,
                      "name": "staker",
                      "nodeType": "VariableDeclaration",
                      "scope": 19120,
                      "src": "15118:21:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Staker"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 18737,
                        "name": "Staker",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17951,
                        "src": "15118:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18743,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18739,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18673,
                        "src": "15142:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 18740,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18001,
                      "src": "15142:16:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$17951_storage_$",
                        "typeString": "mapping(address => struct GenesisProtocolLogic.Staker storage ref)"
                      }
                    },
                    "id": 18742,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 18741,
                      "name": "_beneficiary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18665,
                      "src": "15159:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "15142:30:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$17951_storage",
                      "typeString": "struct GenesisProtocolLogic.Staker storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15118:54:66"
                },
                {
                  "assignments": [
                    18745
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18745,
                      "name": "totalStakes",
                      "nodeType": "VariableDeclaration",
                      "scope": 19120,
                      "src": "15182:19:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18744,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15182:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18756,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18751,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18673,
                            "src": "15228:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 18752,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stakes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17997,
                          "src": "15228:15:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                            "typeString": "mapping(uint256 => uint256)"
                          }
                        },
                        "id": 18754,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 18753,
                          "name": "YES",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18099,
                          "src": "15244:3:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "15228:20:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18746,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18673,
                            "src": "15204:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 18747,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stakes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17997,
                          "src": "15204:15:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                            "typeString": "mapping(uint256 => uint256)"
                          }
                        },
                        "id": 18749,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 18748,
                          "name": "NO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18096,
                          "src": "15220:2:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "15204:19:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 18750,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21287,
                      "src": "15204:23:66",
                      "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": 18755,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15204:45:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15182:67:66"
                },
                {
                  "assignments": [
                    18758
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18758,
                      "name": "totalWinningStakes",
                      "nodeType": "VariableDeclaration",
                      "scope": 19120,
                      "src": "15259:26:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18757,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15259:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18764,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18759,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18673,
                        "src": "15288:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 18760,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17997,
                      "src": "15288:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 18763,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18761,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18673,
                        "src": "15304:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 18762,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "winningVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17959,
                      "src": "15304:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "15288:37:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15259:66:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18768,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18765,
                        "name": "staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18738,
                        "src": "15340:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                        }
                      },
                      "id": 18766,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "amount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17948,
                      "src": "15340:13:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 18767,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15356:1:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "15340:17:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 18861,
                  "nodeType": "IfStatement",
                  "src": "15336:980:66",
                  "trueBody": {
                    "id": 18860,
                    "nodeType": "Block",
                    "src": "15359:957:66",
                    "statements": [
                      {
                        "assignments": [
                          18770
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18770,
                            "name": "totalStakesLeftAfterCallBounty",
                            "nodeType": "VariableDeclaration",
                            "scope": 18860,
                            "src": "15373:38:66",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18769,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15373:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18785,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "313030",
                                  "id": 18782,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15512:3:66",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_100_by_1",
                                    "typeString": "int_const 100"
                                  },
                                  "value": "100"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_100_by_1",
                                    "typeString": "int_const 100"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 18776,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18673,
                                          "src": "15486:8:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 18777,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "stakes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17997,
                                        "src": "15486:15:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                          "typeString": "mapping(uint256 => uint256)"
                                        }
                                      },
                                      "id": 18779,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 18778,
                                        "name": "YES",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18099,
                                        "src": "15502:3:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "15486:20:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 18773,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18673,
                                        "src": "15442:8:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 18774,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "expirationCallBountyPercentage",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17975,
                                      "src": "15442:39:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 18775,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 21215,
                                    "src": "15442:43:66",
                                    "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": 18780,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15442:65:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 18781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21239,
                                "src": "15442:69:66",
                                "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": 18783,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15442:74:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18771,
                              "name": "totalStakes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18745,
                              "src": "15426:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 18772,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21263,
                            "src": "15426:15:66",
                            "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": 18784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15426:91:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15373:144:66"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 18790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18786,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18673,
                              "src": "15535:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 18787,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "15535:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18788,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "15553:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 18789,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "ExpiredInQueue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "15553:28:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "15535:46:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 18803,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18799,
                                "name": "staker",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18738,
                                "src": "15738:6:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                }
                              },
                              "id": 18800,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17946,
                              "src": "15738:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18801,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18673,
                                "src": "15753:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 18802,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17959,
                              "src": "15753:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15738:35:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 18852,
                          "nodeType": "IfStatement",
                          "src": "15734:541:66",
                          "trueBody": {
                            "id": 18851,
                            "nodeType": "Block",
                            "src": "15775:500:66",
                            "statements": [
                              {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 18807,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18804,
                                      "name": "staker",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18738,
                                      "src": "15797:6:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                      }
                                    },
                                    "id": 18805,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "vote",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17946,
                                    "src": "15797:11:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 18806,
                                    "name": "YES",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18099,
                                    "src": "15812:3:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "15797:18:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 18849,
                                  "nodeType": "Block",
                                  "src": "16137:124:66",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 18847,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 18836,
                                            "name": "rewards",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18670,
                                            "src": "16159:7:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                              "typeString": "uint256[3] memory"
                                            }
                                          },
                                          "id": 18838,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 18837,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "16167:1:66",
                                            "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": "16159:10:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 18846,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "components": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 18842,
                                                    "name": "totalStakesLeftAfterCallBounty",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 18770,
                                                    "src": "16191:30:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 18839,
                                                      "name": "staker",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 18738,
                                                      "src": "16173:6:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                                        "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                                      }
                                                    },
                                                    "id": 18840,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "amount",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 17948,
                                                    "src": "16173:13:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 18841,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "mul",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 21215,
                                                  "src": "16173:17:66",
                                                  "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": 18843,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "16173:49:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 18844,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "16172:51:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 18845,
                                            "name": "totalWinningStakes",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18758,
                                            "src": "16224:18:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "16172:70:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16159:83:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 18848,
                                      "nodeType": "ExpressionStatement",
                                      "src": "16159:83:66"
                                    }
                                  ]
                                },
                                "id": 18850,
                                "nodeType": "IfStatement",
                                "src": "15793:468:66",
                                "trueBody": {
                                  "id": 18835,
                                  "nodeType": "Block",
                                  "src": "15817:314:66",
                                  "statements": [
                                    {
                                      "condition": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 18811,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 18808,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18673,
                                            "src": "15843:8:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 18809,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "daoBounty",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17969,
                                          "src": "15843:18:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 18810,
                                          "name": "totalStakesLeftAfterCallBounty",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18770,
                                          "src": "15864:30:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "15843:51:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": null,
                                      "id": 18834,
                                      "nodeType": "IfStatement",
                                      "src": "15839:274:66",
                                      "trueBody": {
                                        "id": 18833,
                                        "nodeType": "Block",
                                        "src": "15896:217:66",
                                        "statements": [
                                          {
                                            "assignments": [
                                              18813
                                            ],
                                            "declarations": [
                                              {
                                                "constant": false,
                                                "id": 18813,
                                                "name": "_totalStakes",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 18833,
                                                "src": "15922:20:66",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "typeName": {
                                                  "id": 18812,
                                                  "name": "uint256",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "15922:7:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "value": null,
                                                "visibility": "internal"
                                              }
                                            ],
                                            "id": 18819,
                                            "initialValue": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 18816,
                                                    "name": "proposal",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 18673,
                                                    "src": "15980:8:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                    }
                                                  },
                                                  "id": 18817,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "daoBounty",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 17969,
                                                  "src": "15980:18:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 18814,
                                                  "name": "totalStakesLeftAfterCallBounty",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18770,
                                                  "src": "15945:30:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 18815,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 21263,
                                                "src": "15945:34:66",
                                                "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": 18818,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "15945:54:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "15922:77:66"
                                          },
                                          {
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 18831,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 18820,
                                                  "name": "rewards",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18670,
                                                  "src": "16025:7:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                                    "typeString": "uint256[3] memory"
                                                  }
                                                },
                                                "id": 18822,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "30",
                                                  "id": 18821,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "16033:1:66",
                                                  "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": "16025:10:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 18830,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "components": [
                                                    {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 18826,
                                                          "name": "_totalStakes",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 18813,
                                                          "src": "16057:12:66",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "expression": {
                                                            "argumentTypes": null,
                                                            "id": 18823,
                                                            "name": "staker",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 18738,
                                                            "src": "16039:6:66",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                                              "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                                            }
                                                          },
                                                          "id": 18824,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberName": "amount",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 17948,
                                                          "src": "16039:13:66",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 18825,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 21215,
                                                        "src": "16039:17:66",
                                                        "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": 18827,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "16039:31:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "id": 18828,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "TupleExpression",
                                                  "src": "16038:33:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "/",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "id": 18829,
                                                  "name": "totalWinningStakes",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18758,
                                                  "src": "16072:18:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "16038:52:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "16025:65:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 18832,
                                            "nodeType": "ExpressionStatement",
                                            "src": "16025:65:66"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        },
                        "id": 18853,
                        "nodeType": "IfStatement",
                        "src": "15531:744:66",
                        "trueBody": {
                          "id": 18798,
                          "nodeType": "Block",
                          "src": "15583:145:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18791,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18670,
                                    "src": "15687:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 18793,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 18792,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15695:1:66",
                                    "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": "15687:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18794,
                                    "name": "staker",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18738,
                                    "src": "15700:6:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                    }
                                  },
                                  "id": 18795,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "amount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17948,
                                  "src": "15700:13:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15687:26:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18797,
                              "nodeType": "ExpressionStatement",
                              "src": "15687:26:66"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18854,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18738,
                              "src": "16288:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 18856,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17948,
                            "src": "16288:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 18857,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16304:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "16288:17:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18859,
                        "nodeType": "ExpressionStatement",
                        "src": "16288:17:66"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 18883,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 18878,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 18872,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 18865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18862,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18673,
                              "src": "16367:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 18863,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "daoRedeemItsWinnings",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17981,
                            "src": "16367:29:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 18864,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16400:5:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "16367:38:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 18871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 18866,
                            "name": "_beneficiary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18665,
                            "src": "16421:12:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18867,
                              "name": "organizations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18086,
                              "src": "16437:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                "typeString": "mapping(bytes32 => address)"
                              }
                            },
                            "id": 18870,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18868,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18673,
                                "src": "16451:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 18869,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "organizationId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17953,
                              "src": "16451:23:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16437:38:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "16421:54:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "16367:108:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ProposalState_$17903",
                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                        },
                        "id": 18877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18873,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18673,
                            "src": "16491:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 18874,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "state",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17957,
                          "src": "16491:14:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18875,
                            "name": "ProposalState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17903,
                            "src": "16509:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                              "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                            }
                          },
                          "id": 18876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "ExpiredInQueue",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "16509:28:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "src": "16491:46:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "16367:170:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 18882,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18879,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18673,
                          "src": "16553:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 18880,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "winningVote",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17959,
                        "src": "16553:20:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 18881,
                        "name": "NO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18096,
                        "src": "16577:2:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "16553:26:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "16367:212:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 18913,
                  "nodeType": "IfStatement",
                  "src": "16363:414:66",
                  "trueBody": {
                    "id": 18912,
                    "nodeType": "Block",
                    "src": "16581:196:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18884,
                              "name": "rewards",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18670,
                              "src": "16595:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                "typeString": "uint256[3] memory"
                              }
                            },
                            "id": 18886,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18885,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16603:1:66",
                              "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": "16595:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18901,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18673,
                                  "src": "16697:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 18902,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "daoBounty",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17969,
                                "src": "16697:18:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 18898,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 18894,
                                              "name": "totalStakes",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18745,
                                              "src": "16659:11:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 18891,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18673,
                                                "src": "16636:8:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 18892,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "daoBounty",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 17969,
                                              "src": "16636:18:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 18893,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 21215,
                                            "src": "16636:22:66",
                                            "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": 18895,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "16636:35:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 18896,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "16635:37:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 18897,
                                      "name": "totalWinningStakes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18758,
                                      "src": "16673:18:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "16635:56:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 18887,
                                      "name": "rewards",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18670,
                                      "src": "16620:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                        "typeString": "uint256[3] memory"
                                      }
                                    },
                                    "id": 18889,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 18888,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "16628:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "16620:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18890,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 21287,
                                  "src": "16620:14:66",
                                  "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": 18899,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16620:72:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18900,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21263,
                              "src": "16620:76:66",
                              "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": 18903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16620:96:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16595:121:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18905,
                        "nodeType": "ExpressionStatement",
                        "src": "16595:121:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18906,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18673,
                              "src": "16730:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 18908,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoRedeemItsWinnings",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17981,
                            "src": "16730:29:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 18909,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16762:4:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "16730:36:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18911,
                        "nodeType": "ExpressionStatement",
                        "src": "16730:36:66"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    18915
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18915,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 19120,
                      "src": "16806:19:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Voter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 18914,
                        "name": "Voter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17944,
                        "src": "16806:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Voter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18920,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18916,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18673,
                        "src": "16828:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 18917,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17993,
                      "src": "16828:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$17944_storage_$",
                        "typeString": "mapping(address => struct GenesisProtocolLogic.Voter storage ref)"
                      }
                    },
                    "id": 18919,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 18918,
                      "name": "_beneficiary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18665,
                      "src": "16844:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "16828:29:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$17944_storage",
                      "typeString": "struct GenesisProtocolLogic.Voter storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16806:51:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 18929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18921,
                              "name": "voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18915,
                              "src": "16872:5:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                              }
                            },
                            "id": 18922,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "reputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17941,
                            "src": "16872:16:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 18923,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16892:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "16872:21:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 18925,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "16871:23:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18926,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18915,
                            "src": "16899:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                            }
                          },
                          "id": 18927,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "preBoosted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17943,
                          "src": "16899:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 18928,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "16898:18:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "16871:45:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 18995,
                  "nodeType": "IfStatement",
                  "src": "16867:582:66",
                  "trueBody": {
                    "id": 18994,
                    "nodeType": "Block",
                    "src": "16918:531:66",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 18934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18930,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18673,
                              "src": "16936:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 18931,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "16936:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18932,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "16954:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 18933,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "ExpiredInQueue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "16954:28:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "16936:46:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 18955,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18951,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18673,
                                "src": "17153:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 18952,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17959,
                              "src": "17153:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18953,
                                "name": "voter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18915,
                                "src": "17177:5:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                                }
                              },
                              "id": 18954,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17939,
                              "src": "17177:10:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17153:34:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 18986,
                          "nodeType": "IfStatement",
                          "src": "17149:256:66",
                          "trueBody": {
                            "id": 18985,
                            "nodeType": "Block",
                            "src": "17189:216:66",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18983,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 18956,
                                      "name": "rewards",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18670,
                                      "src": "17207:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                        "typeString": "uint256[3] memory"
                                      }
                                    },
                                    "id": 18958,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 18957,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17215:1:66",
                                      "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": "17207:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 18981,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 18973,
                                                  "name": "lostReputation",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18703,
                                                  "src": "17326:14:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 18970,
                                                    "name": "voter",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 18915,
                                                    "src": "17305:5:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                                                      "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                                                    }
                                                  },
                                                  "id": 18971,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "reputation",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 17941,
                                                  "src": "17305:16:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 18972,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "mul",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 21215,
                                                "src": "17305:20:66",
                                                "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": 18974,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "17305:36:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 18975,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "17304:38:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 18976,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18673,
                                              "src": "17343:8:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 18977,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "preBoostedVotes",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17989,
                                            "src": "17343:24:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                              "typeString": "mapping(uint256 => uint256)"
                                            }
                                          },
                                          "id": 18980,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 18978,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18673,
                                              "src": "17368:8:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 18979,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "winningVote",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17959,
                                            "src": "17368:20:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "17343:46:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "17304:85:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 18967,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "components": [
                                                {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 18962,
                                                        "name": "params",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 18696,
                                                        "src": "17243:6:66",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                                        }
                                                      },
                                                      "id": 18963,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "votersReputationLossRatio",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 17928,
                                                      "src": "17243:32:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 18959,
                                                        "name": "voter",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 18915,
                                                        "src": "17222:5:66",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                                                        }
                                                      },
                                                      "id": 18960,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "reputation",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 17941,
                                                      "src": "17222:16:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 18961,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mul",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 21215,
                                                    "src": "17222:20:66",
                                                    "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": 18964,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "17222:54:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 18965,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "17221:56:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "/",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "313030",
                                              "id": 18966,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "17278:3:66",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_100_by_1",
                                                "typeString": "int_const 100"
                                              },
                                              "value": "100"
                                            },
                                            "src": "17221:60:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 18968,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "17220:62:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 18969,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 21287,
                                      "src": "17220:83:66",
                                      "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": 18982,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17220:170:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "17207:183:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 18984,
                                "nodeType": "ExpressionStatement",
                                "src": "17207:183:66"
                              }
                            ]
                          }
                        },
                        "id": 18987,
                        "nodeType": "IfStatement",
                        "src": "16932:473:66",
                        "trueBody": {
                          "id": 18950,
                          "nodeType": "Block",
                          "src": "16984:159:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18948,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18935,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18670,
                                    "src": "17053:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 18937,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 18936,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17061:1:66",
                                    "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": "17053:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 18946,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 18941,
                                                  "name": "params",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18696,
                                                  "src": "17089:6:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                                  }
                                                },
                                                "id": 18942,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "votersReputationLossRatio",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 17928,
                                                "src": "17089:32:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 18938,
                                                  "name": "voter",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18915,
                                                  "src": "17068:5:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                                                  }
                                                },
                                                "id": 18939,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "reputation",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 17941,
                                                "src": "17068:16:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 18940,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 21215,
                                              "src": "17068:20:66",
                                              "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": 18943,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17068:54:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 18944,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "17067:56:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "313030",
                                        "id": 18945,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17124:3:66",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_100_by_1",
                                          "typeString": "int_const 100"
                                        },
                                        "value": "100"
                                      },
                                      "src": "17067:60:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 18947,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "17066:62:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17053:75:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18949,
                              "nodeType": "ExpressionStatement",
                              "src": "17053:75:66"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18988,
                              "name": "voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18915,
                              "src": "17418:5:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                              }
                            },
                            "id": 18990,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "reputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17941,
                            "src": "17418:16:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 18991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17437:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17418:20:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18993,
                        "nodeType": "ExpressionStatement",
                        "src": "17418:20:66"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 19014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 19006,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 18999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18996,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18673,
                                "src": "17485:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 18997,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "proposer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17961,
                              "src": "17485:17:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 18998,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18665,
                              "src": "17506:12:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "17485:33:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 19000,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "17484:35:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19004,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19001,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18673,
                                "src": "17522:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 19002,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17959,
                              "src": "17522:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 19003,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18099,
                              "src": "17546:3:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17522:27:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 19005,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "17521:29:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "17484:66:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 19012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19007,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18673,
                              "src": "17553:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19008,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "proposer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17961,
                            "src": "17553:17:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19010,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17582:1:66",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 19009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17574:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 19011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17574:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "17553:31:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19013,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "17552:33:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "17484:101:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19031,
                  "nodeType": "IfStatement",
                  "src": "17480:214:66",
                  "trueBody": {
                    "id": 19030,
                    "nodeType": "Block",
                    "src": "17587:107:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 19015,
                              "name": "rewards",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18670,
                              "src": "17601:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                "typeString": "uint256[3] memory"
                              }
                            },
                            "id": 19017,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 19016,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17609:1:66",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17601:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19018,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18696,
                              "src": "17614:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                "typeString": "struct GenesisProtocolLogic.Parameters memory"
                              }
                            },
                            "id": 19019,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "proposingRepReward",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17926,
                            "src": "17614:25:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17601:38:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19021,
                        "nodeType": "ExpressionStatement",
                        "src": "17601:38:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19022,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18673,
                              "src": "17653:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19024,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "proposer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17961,
                            "src": "17653:17:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19026,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17681:1:66",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 19025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17673:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 19027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17673:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "17653:30:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 19029,
                        "nodeType": "ExpressionStatement",
                        "src": "17653:30:66"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 19036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 19032,
                        "name": "rewards",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18670,
                        "src": "17707:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                          "typeString": "uint256[3] memory"
                        }
                      },
                      "id": 19034,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 19033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17715:1:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "17707:10:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 19035,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17721:1:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "17707:15:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19073,
                  "nodeType": "IfStatement",
                  "src": "17703:313:66",
                  "trueBody": {
                    "id": 19072,
                    "nodeType": "Block",
                    "src": "17724:292:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19037,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18673,
                              "src": "17738:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19039,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "totalStakes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17971,
                            "src": "17738:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 19043,
                                  "name": "rewards",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18670,
                                  "src": "17786:7:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                    "typeString": "uint256[3] memory"
                                  }
                                },
                                "id": 19045,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 19044,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17794:1:66",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17786:10:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19040,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18673,
                                  "src": "17761:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 19041,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalStakes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17971,
                                "src": "17761:20:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21263,
                              "src": "17761:24:66",
                              "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": 19046,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17761:36:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17738:59:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19048,
                        "nodeType": "ExpressionStatement",
                        "src": "17738:59:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 19052,
                                  "name": "_beneficiary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18665,
                                  "src": "17841:12:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 19053,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18670,
                                    "src": "17855:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 19055,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 19054,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17863:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "17855:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19050,
                                  "name": "stakingToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18103,
                                  "src": "17819:12:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$22137",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 19051,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22079,
                                "src": "17819:21:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 19056,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17819:47:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7472616e7366657220746f2062656e6566696369617279206661696c6564",
                              "id": 19057,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17868:32:66",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_01f9c28ec45391324b198ba689dab8ac93829b0379c464b3a8745b9a5d1be004",
                                "typeString": "literal_string \"transfer to beneficiary failed\""
                              },
                              "value": "transfer to beneficiary failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_01f9c28ec45391324b198ba689dab8ac93829b0379c464b3a8745b9a5d1be004",
                                "typeString": "literal_string \"transfer to beneficiary failed\""
                              }
                            ],
                            "id": 19049,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              22174,
                              22175
                            ],
                            "referencedDeclaration": 22175,
                            "src": "17811:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19058,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17811:90:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19059,
                        "nodeType": "ExpressionStatement",
                        "src": "17811:90:66"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19061,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18663,
                              "src": "17927:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 19062,
                                "name": "organizations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18086,
                                "src": "17940:13:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 19065,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19063,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18673,
                                  "src": "17954:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 19064,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "organizationId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17953,
                                "src": "17954:23:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17940:38:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19066,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18665,
                              "src": "17980:12:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 19067,
                                "name": "rewards",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18670,
                                "src": "17994:7:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                  "typeString": "uint256[3] memory"
                                }
                              },
                              "id": 19069,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19068,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18002:1:66",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17994:10:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19060,
                            "name": "Redeem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18024,
                            "src": "17920:6:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,address,uint256)"
                            }
                          },
                          "id": 19070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17920:85:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19071,
                        "nodeType": "EmitStatement",
                        "src": "17915:90:66"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 19083,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 19078,
                            "name": "rewards",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18670,
                            "src": "18044:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                              "typeString": "uint256[3] memory"
                            }
                          },
                          "id": 19080,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 19079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18052:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "18044:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 19074,
                            "name": "rewards",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18670,
                            "src": "18029:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                              "typeString": "uint256[3] memory"
                            }
                          },
                          "id": 19076,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 19075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18037:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "18029:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19077,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "18029:14:66",
                        "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": 19081,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18029:26:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 19082,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18059:1:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "18029:31:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19119,
                  "nodeType": "IfStatement",
                  "src": "18025:388:66",
                  "trueBody": {
                    "id": 19118,
                    "nodeType": "Block",
                    "src": "18062:351:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 19093,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18670,
                                    "src": "18171:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 19095,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 19094,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18179:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18171:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 19089,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18670,
                                    "src": "18156:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 19091,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 19090,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18164:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18156:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 19092,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21287,
                                "src": "18156:14:66",
                                "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": 19096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18156:26:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19097,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18665,
                              "src": "18184:12:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19098,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18663,
                              "src": "18198:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19085,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18673,
                                    "src": "18108:8:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 19086,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "callbacks",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17955,
                                  "src": "18108:18:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 19084,
                                "name": "VotingMachineCallbacksInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20647,
                                "src": "18076:31:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$20647_$",
                                  "typeString": "type(contract VotingMachineCallbacksInterface)"
                                }
                              },
                              "id": 19087,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18076:51:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$20647",
                                "typeString": "contract VotingMachineCallbacksInterface"
                              }
                            },
                            "id": 19088,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mintReputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20597,
                            "src": "18076:79:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (uint256,address,bytes32) external returns (bool)"
                            }
                          },
                          "id": 19099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18076:134:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19100,
                        "nodeType": "ExpressionStatement",
                        "src": "18076:134:66"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19102,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18663,
                              "src": "18259:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 19103,
                                "name": "organizations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18086,
                                "src": "18284:13:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 19106,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19104,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18673,
                                  "src": "18298:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 19105,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "organizationId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17953,
                                "src": "18298:23:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18284:38:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19107,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18665,
                              "src": "18336:12:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 19112,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18670,
                                    "src": "18377:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 19114,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 19113,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18385:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18377:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 19108,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18670,
                                    "src": "18362:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 19110,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 19109,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18370:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18362:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 19111,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21287,
                                "src": "18362:14:66",
                                "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": 19115,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18362:26:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19101,
                            "name": "RedeemReputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18044,
                            "src": "18229:16:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,address,uint256)"
                            }
                          },
                          "id": 19116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18229:173:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19117,
                        "nodeType": "EmitStatement",
                        "src": "18224:178:66"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev redeem a reward for a successful stake, vote or proposing.\nThe function use a beneficiary address as a parameter (and not msg.sender) to enable\nusers to redeem on behalf of someone else.\n@param _proposalId the ID of the proposal\n@param _beneficiary - the beneficiary address\n@return rewards -\n          [0] stakerTokenReward\n          [1] voterReputationReward\n          [2] proposerReputationReward",
            "id": 19121,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "redeem",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18666,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18663,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 19121,
                  "src": "14403:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18662,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14403:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18665,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 19121,
                  "src": "14424:20:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18664,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14424:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14402:43:66"
            },
            "returnParameters": {
              "id": 18671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18670,
                  "name": "rewards",
                  "nodeType": "VariableDeclaration",
                  "scope": 19121,
                  "src": "14462:22:66",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                    "typeString": "uint256[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 18667,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "14462:4:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 18669,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 18668,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14467:1:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "14462:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                      "typeString": "uint256[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14461:24:66"
            },
            "scope": 20436,
            "src": "14387:4032:66",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19258,
              "nodeType": "Block",
              "src": "19056:1256:66",
              "statements": [
                {
                  "assignments": [
                    19133
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19133,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 19258,
                      "src": "19066:25:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19132,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "19066:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19137,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 19134,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18078,
                      "src": "19094:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 19136,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 19135,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19123,
                      "src": "19104:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19094:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19066:50:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ProposalState_$17903",
                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                        },
                        "id": 19143,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19139,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19133,
                            "src": "19134:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 19140,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "state",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17957,
                          "src": "19134:14:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19141,
                            "name": "ProposalState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17903,
                            "src": "19152:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                              "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                            }
                          },
                          "id": 19142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Executed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "19152:22:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "src": "19134:40:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 19138,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "19126:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 19144,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19126:49:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19145,
                  "nodeType": "ExpressionStatement",
                  "src": "19126:49:66"
                },
                {
                  "assignments": [
                    19147
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19147,
                      "name": "totalWinningStakes",
                      "nodeType": "VariableDeclaration",
                      "scope": 19258,
                      "src": "19185:26:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19146,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "19185:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19153,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19148,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19133,
                        "src": "19214:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 19149,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17997,
                      "src": "19214:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 19152,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19150,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19133,
                        "src": "19230:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 19151,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "winningVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17959,
                      "src": "19230:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19214:37:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19185:66:66"
                },
                {
                  "assignments": [
                    19155
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19155,
                      "name": "staker",
                      "nodeType": "VariableDeclaration",
                      "scope": 19258,
                      "src": "19261:21:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Staker"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19154,
                        "name": "Staker",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17951,
                        "src": "19261:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19160,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19156,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19133,
                        "src": "19285:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 19157,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18001,
                      "src": "19285:16:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$17951_storage_$",
                        "typeString": "mapping(address => struct GenesisProtocolLogic.Staker storage ref)"
                      }
                    },
                    "id": 19159,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 19158,
                      "name": "_beneficiary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19125,
                      "src": "19302:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19285:30:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$17951_storage",
                      "typeString": "struct GenesisProtocolLogic.Staker storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19261:54:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 19183,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 19178,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 19172,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19164,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19161,
                                  "name": "staker",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19155,
                                  "src": "19343:6:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                  }
                                },
                                "id": 19162,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount4Bounty",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17950,
                                "src": "19343:20:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19163,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "19366:1:66",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "19343:24:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 19165,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "19342:26:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19170,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19166,
                                  "name": "staker",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19155,
                                  "src": "19384:6:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                  }
                                },
                                "id": 19167,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "vote",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17946,
                                "src": "19384:11:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19168,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19133,
                                  "src": "19399:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 19169,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "winningVote",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17959,
                                "src": "19399:20:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "19384:35:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 19171,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "19383:37:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "19342:78:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19176,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19173,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19133,
                                "src": "19436:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 19174,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17959,
                              "src": "19436:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 19175,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18099,
                              "src": "19460:3:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "19436:27:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 19177,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "19435:29:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "19342:122:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19179,
                            "name": "totalWinningStakes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19147,
                            "src": "19480:18:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19502:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19480:23:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19182,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "19479:25:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "19342:162:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19196,
                  "nodeType": "IfStatement",
                  "src": "19325:318:66",
                  "trueBody": {
                    "id": 19195,
                    "nodeType": "Block",
                    "src": "19506:137:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19184,
                            "name": "potentialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19130,
                            "src": "19548:15:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19192,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 19189,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19185,
                                      "name": "staker",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19155,
                                      "src": "19567:6:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                      }
                                    },
                                    "id": 19186,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount4Bounty",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17950,
                                    "src": "19567:20:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19187,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19133,
                                      "src": "19590:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 19188,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "daoBounty",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17969,
                                    "src": "19590:18:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "19567:41:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 19190,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "19566:43:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 19191,
                              "name": "totalWinningStakes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19147,
                              "src": "19610:18:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "19566:62:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19548:80:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19194,
                        "nodeType": "ExpressionStatement",
                        "src": "19548:80:66"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 19212,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19197,
                            "name": "potentialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19130,
                            "src": "19657:15:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19198,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19676:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19657:20:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19200,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "19656:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19206,
                                "name": "stakingToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18103,
                                "src": "19781:12:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$22137",
                                  "typeString": "contract IERC20"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 19207,
                                "name": "_proposalId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19123,
                                "src": "19795:11:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$22137",
                                  "typeString": "contract IERC20"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19202,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19133,
                                      "src": "19726:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 19203,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "callbacks",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17955,
                                    "src": "19726:18:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 19201,
                                  "name": "VotingMachineCallbacksInterface",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20647,
                                  "src": "19694:31:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$20647_$",
                                    "typeString": "type(contract VotingMachineCallbacksInterface)"
                                  }
                                },
                                "id": 19204,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19694:51:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$20647",
                                  "typeString": "contract VotingMachineCallbacksInterface"
                                }
                              },
                              "id": 19205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOfStakingToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20646,
                              "src": "19694:86:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_contract$_IERC20_$22137_$_t_bytes32_$returns$_t_uint256_$",
                                "typeString": "function (contract IERC20,bytes32) view external returns (uint256)"
                              }
                            },
                            "id": 19208,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19694:113:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 19209,
                            "name": "potentialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19130,
                            "src": "19811:15:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19694:132:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19211,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "19693:134:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "19656:171:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19257,
                  "nodeType": "IfStatement",
                  "src": "19652:654:66",
                  "trueBody": {
                    "id": 19256,
                    "nodeType": "Block",
                    "src": "19829:477:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19213,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19155,
                              "src": "19843:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 19215,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount4Bounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17950,
                            "src": "19843:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19216,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19866:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19843:24:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19218,
                        "nodeType": "ExpressionStatement",
                        "src": "19843:24:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19219,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19133,
                              "src": "19881:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19221,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoBountyRemain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17967,
                            "src": "19881:24:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19225,
                                "name": "potentialAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19130,
                                "src": "19937:15:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19222,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19133,
                                  "src": "19908:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 19223,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "daoBountyRemain",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17967,
                                "src": "19908:24:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19224,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21263,
                              "src": "19908:28:66",
                              "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": 19226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19908:45:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19881:72:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19228,
                        "nodeType": "ExpressionStatement",
                        "src": "19881:72:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 19235,
                                  "name": "stakingToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18103,
                                  "src": "20074:12:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$22137",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 19236,
                                  "name": "_beneficiary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19125,
                                  "src": "20088:12:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 19237,
                                  "name": "potentialAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19130,
                                  "src": "20102:15:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 19238,
                                  "name": "_proposalId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19123,
                                  "src": "20119:11:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$22137",
                                    "typeString": "contract IERC20"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 19231,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19133,
                                        "src": "20020:8:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 19232,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "callbacks",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17955,
                                      "src": "20020:18:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 19230,
                                    "name": "VotingMachineCallbacksInterface",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20647,
                                    "src": "19988:31:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$20647_$",
                                      "typeString": "type(contract VotingMachineCallbacksInterface)"
                                    }
                                  },
                                  "id": 19233,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19988:51:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$20647",
                                    "typeString": "contract VotingMachineCallbacksInterface"
                                  }
                                },
                                "id": 19234,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "stakingTokenTransfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20621,
                                "src": "19988:85:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20_$22137_$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                                  "typeString": "function (contract IERC20,address,uint256,bytes32) external returns (bool)"
                                }
                              },
                              "id": 19239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19988:143:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 19229,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              22174,
                              22175
                            ],
                            "referencedDeclaration": 22174,
                            "src": "19967:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 19240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19967:165:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19241,
                        "nodeType": "ExpressionStatement",
                        "src": "19967:165:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19242,
                            "name": "redeemedAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19128,
                            "src": "20146:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 19243,
                            "name": "potentialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19130,
                            "src": "20163:15:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20146:32:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19245,
                        "nodeType": "ExpressionStatement",
                        "src": "20146:32:66"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19247,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19123,
                              "src": "20213:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 19248,
                                "name": "organizations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18086,
                                "src": "20226:13:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 19251,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19249,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19133,
                                  "src": "20240:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 19250,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "organizationId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17953,
                                "src": "20240:23:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "20226:38:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19252,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19125,
                              "src": "20266:12:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19253,
                              "name": "redeemedAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19128,
                              "src": "20280:14:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19246,
                            "name": "RedeemDaoBounty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18034,
                            "src": "20197:15:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,address,uint256)"
                            }
                          },
                          "id": 19254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20197:98:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19255,
                        "nodeType": "EmitStatement",
                        "src": "20192:103:66"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev redeemDaoBounty a reward for a successful stake.\nThe function use a beneficiary address as a parameter (and not msg.sender) to enable\nusers to redeem on behalf of someone else.\n@param _proposalId the ID of the proposal\n@param _beneficiary - the beneficiary address\n@return redeemedAmount - redeem token amount\n@return potentialAmount - potential redeem token amount(if there is enough tokens bounty at the organization )",
            "id": 19259,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "redeemDaoBounty",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19126,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19123,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 19259,
                  "src": "18941:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19122,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18941:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19125,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 19259,
                  "src": "18962:20:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19124,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18962:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18940:43:66"
            },
            "returnParameters": {
              "id": 19131,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19128,
                  "name": "redeemedAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 19259,
                  "src": "19007:22:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19127,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19007:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19130,
                  "name": "potentialAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 19259,
                  "src": "19031:23:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19129,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19031:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19006:49:66"
            },
            "scope": 20436,
            "src": "18916:1396:66",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19284,
              "nodeType": "Block",
              "src": "20566:162:66",
              "statements": [
                {
                  "assignments": [
                    19267
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19267,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 19284,
                      "src": "20576:24:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19266,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "20576:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19271,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 19268,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18078,
                      "src": "20603:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 19270,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 19269,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19261,
                      "src": "20613:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "20603:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20576:49:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 19281,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19273,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19261,
                              "src": "20650:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 19272,
                            "name": "_score",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20395,
                            "src": "20643:6:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32) view returns (uint256)"
                            }
                          },
                          "id": 19274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20643:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19276,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19267,
                                "src": "20675:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                }
                              },
                              "id": 19277,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "paramsHash",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17965,
                              "src": "20675:19:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19278,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19267,
                                "src": "20696:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                }
                              },
                              "id": 19279,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "organizationId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17953,
                              "src": "20696:23:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 19275,
                            "name": "threshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19324,
                            "src": "20665:9:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32,bytes32) view returns (uint256)"
                            }
                          },
                          "id": 19280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20665:55:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "20643:77:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 19282,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "20642:79:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19265,
                  "id": 19283,
                  "nodeType": "Return",
                  "src": "20635:86:66"
                }
              ]
            },
            "documentation": "@dev shouldBoost check if a proposal should be shifted to boosted phase.\n@param _proposalId the ID of the proposal\n@return bool true or false.",
            "id": 19285,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "shouldBoost",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19262,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19261,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 19285,
                  "src": "20519:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19260,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "20519:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20518:21:66"
            },
            "returnParameters": {
              "id": 19265,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19264,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 19285,
                  "src": "20560:4:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19263,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20560:4:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20559:6:66"
            },
            "scope": 20436,
            "src": "20498:230:66",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19323,
              "nodeType": "Block",
              "src": "21248:290:66",
              "statements": [
                {
                  "assignments": [
                    19295
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19295,
                      "name": "power",
                      "nodeType": "VariableDeclaration",
                      "scope": 19323,
                      "src": "21258:13:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19294,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "21258:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19299,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 19296,
                      "name": "orgBoostedProposalsCnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18082,
                      "src": "21274:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 19298,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 19297,
                      "name": "_organizationId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19289,
                      "src": "21297:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "21274:39:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21258:55:66"
                },
                {
                  "assignments": [
                    19301
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19301,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 19323,
                      "src": "21323:25:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19300,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17937,
                        "src": "21323:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19305,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 19302,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18074,
                      "src": "21351:10:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                      }
                    },
                    "id": 19304,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 19303,
                      "name": "_paramsHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19287,
                      "src": "21362:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "21351:23:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21323:51:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 19309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 19306,
                      "name": "power",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19295,
                      "src": "21389:5:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19307,
                        "name": "params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19301,
                        "src": "21397:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters storage pointer"
                        }
                      },
                      "id": 19308,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "limitExponentValue",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17922,
                      "src": "21397:25:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21389:33:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19316,
                  "nodeType": "IfStatement",
                  "src": "21385:97:66",
                  "trueBody": {
                    "id": 19315,
                    "nodeType": "Block",
                    "src": "21424:58:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19310,
                            "name": "power",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19295,
                            "src": "21438:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19311,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19301,
                              "src": "21446:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Parameters storage pointer"
                              }
                            },
                            "id": 19312,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "limitExponentValue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17922,
                            "src": "21446:25:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21438:33:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19314,
                        "nodeType": "ExpressionStatement",
                        "src": "21438:33:66"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 19320,
                        "name": "power",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19295,
                        "src": "21525:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19317,
                          "name": "params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19301,
                          "src": "21499:6:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Parameters storage pointer"
                          }
                        },
                        "id": 19318,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "thresholdConst",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17920,
                        "src": "21499:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 19319,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "pow",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16500,
                      "src": "21499:25:66",
                      "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": 19321,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21499:32:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 19293,
                  "id": 19322,
                  "nodeType": "Return",
                  "src": "21492:39:66"
                }
              ]
            },
            "documentation": "@dev threshold return the organization's score threshold which required by\na proposal to shift to boosted state.\nThis threshold is dynamically set and it depend on the number of boosted proposal.\n@param _organizationId the organization identifier\n@param _paramsHash the organization parameters hash\n@return uint256 organization's score threshold as real number.",
            "id": 19324,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "threshold",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19290,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19287,
                  "name": "_paramsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 19324,
                  "src": "21173:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19286,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21173:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19289,
                  "name": "_organizationId",
                  "nodeType": "VariableDeclaration",
                  "scope": 19324,
                  "src": "21194:23:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19288,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21194:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21172:46:66"
            },
            "returnParameters": {
              "id": 19293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19292,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 19324,
                  "src": "21239:7:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19291,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21239:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21238:9:66"
            },
            "scope": 20436,
            "src": "21154:384:66",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19380,
              "nodeType": "Block",
              "src": "21823:571:66",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19341,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22043:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19343,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 19342,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22051:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22043:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19344,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22071:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19346,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 19345,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22079:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22071:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19347,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22099:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19349,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 19348,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22107:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22099:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19350,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22127:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19352,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "33",
                                      "id": 19351,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22135:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22127:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19353,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22155:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19355,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "34",
                                      "id": 19354,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22163:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22155:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19356,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22183:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19358,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "35",
                                      "id": 19357,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22191:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_5_by_1",
                                        "typeString": "int_const 5"
                                      },
                                      "value": "5"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22183:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19359,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22211:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19361,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "36",
                                      "id": 19360,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22219:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_6_by_1",
                                        "typeString": "int_const 6"
                                      },
                                      "value": "6"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22211:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19362,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22239:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19364,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "37",
                                      "id": 19363,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22247:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_7_by_1",
                                        "typeString": "int_const 7"
                                      },
                                      "value": "7"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22239:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19365,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22267:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19367,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "38",
                                      "id": 19366,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22275:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8_by_1",
                                        "typeString": "int_const 8"
                                      },
                                      "value": "8"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22267:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19368,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22295:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19370,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "39",
                                      "id": 19369,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22303:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_9_by_1",
                                        "typeString": "int_const 9"
                                      },
                                      "value": "9"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22295:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19371,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22323:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19373,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3130",
                                      "id": 19372,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22331:2:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22323:11:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19339,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22158,
                                    "src": "22009:3:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 19340,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "22009:16:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 19374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22009:326:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 19338,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22165,
                              "src": "21986:9:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 19375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21986:363:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 19376,
                            "name": "_voteOnBehalf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19330,
                            "src": "22363:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 19336,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22158,
                            "src": "21956:3:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "21956:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 19377,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21956:430:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19335,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22165,
                      "src": "21933:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 19378,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21933:454:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 19334,
                  "id": 19379,
                  "nodeType": "Return",
                  "src": "21926:461:66"
                }
              ]
            },
            "documentation": "@dev hashParameters returns a hash of the given parameters",
            "id": 19381,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getParametersHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19331,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19328,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 19381,
                  "src": "21656:23:66",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                    "typeString": "uint256[11]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 19325,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "21656:4:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 19327,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "3131",
                      "id": 19326,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21661:2:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_11_by_1",
                        "typeString": "int_const 11"
                      },
                      "value": "11"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "21656:8:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$11_storage_ptr",
                      "typeString": "uint256[11]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19330,
                  "name": "_voteOnBehalf",
                  "nodeType": "VariableDeclaration",
                  "scope": 19381,
                  "src": "21734:21:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19329,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "21734:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21646:115:66"
            },
            "returnParameters": {
              "id": 19334,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19333,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 19381,
                  "src": "21806:7:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19332,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21806:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21805:9:66"
            },
            "scope": 20436,
            "src": "21620:774:66",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19884,
              "nodeType": "Block",
              "src": "22810:6329:66",
              "statements": [
                {
                  "assignments": [
                    19392
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19392,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 19884,
                      "src": "22820:25:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19391,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "22820:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19396,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 19393,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18078,
                      "src": "22848:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 19395,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 19394,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19383,
                      "src": "22858:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "22848:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22820:50:66"
                },
                {
                  "assignments": [
                    19398
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19398,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 19884,
                      "src": "22880:24:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19397,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17937,
                        "src": "22880:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19403,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 19399,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18074,
                      "src": "22907:10:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                      }
                    },
                    "id": 19402,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19400,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19392,
                        "src": "22918:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 19401,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17965,
                      "src": "22918:19:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "22907:31:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22880:58:66"
                },
                {
                  "assignments": [
                    19405
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19405,
                      "name": "tmpProposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 19884,
                      "src": "22948:27:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19404,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "22948:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19407,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 19406,
                    "name": "proposal",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19392,
                    "src": "22978:8:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22948:38:66"
                },
                {
                  "assignments": [
                    19409
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19409,
                      "name": "totalReputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 19884,
                      "src": "22996:23:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19408,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "22996:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19417,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 19415,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19383,
                        "src": "23107:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19411,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "23062:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19412,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "callbacks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17955,
                            "src": "23062:18:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 19410,
                          "name": "VotingMachineCallbacksInterface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20647,
                          "src": "23030:31:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$20647_$",
                            "typeString": "type(contract VotingMachineCallbacksInterface)"
                          }
                        },
                        "id": 19413,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23030:51:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$20647",
                          "typeString": "contract VotingMachineCallbacksInterface"
                        }
                      },
                      "id": 19414,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTotalReputationSupply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 20628,
                      "src": "23030:76:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) view external returns (uint256)"
                      }
                    },
                    "id": 19416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23030:89:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22996:123:66"
                },
                {
                  "assignments": [
                    19419
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19419,
                      "name": "executionBar",
                      "nodeType": "VariableDeclaration",
                      "scope": 19884,
                      "src": "23179:20:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19418,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "23179:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19427,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 19426,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19420,
                            "name": "totalReputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19409,
                            "src": "23203:15:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 19421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23219:3:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "23203:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 19423,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "23202:21:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19424,
                        "name": "params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19398,
                        "src": "23226:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters memory"
                        }
                      },
                      "id": 19425,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "queuedVoteRequiredPercentage",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17912,
                      "src": "23226:35:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23202:59:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23179:82:66"
                },
                {
                  "assignments": [
                    19429
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19429,
                      "name": "executionState",
                      "nodeType": "VariableDeclaration",
                      "scope": 19884,
                      "src": "23271:29:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ExecutionState_$17910",
                        "typeString": "enum GenesisProtocolLogic.ExecutionState"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19428,
                        "name": "ExecutionState",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17910,
                        "src": "23271:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ExecutionState_$17910",
                          "typeString": "enum GenesisProtocolLogic.ExecutionState"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19432,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 19430,
                      "name": "ExecutionState",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17910,
                      "src": "23303:14:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                        "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                      }
                    },
                    "id": 19431,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "None",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "23303:19:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ExecutionState_$17910",
                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23271:51:66"
                },
                {
                  "assignments": [
                    19434
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19434,
                      "name": "averageDownstakesOfBoosted",
                      "nodeType": "VariableDeclaration",
                      "scope": 19884,
                      "src": "23332:34:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19433,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "23332:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19435,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23332:34:66"
                },
                {
                  "assignments": [
                    19437
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19437,
                      "name": "confidenceThreshold",
                      "nodeType": "VariableDeclaration",
                      "scope": 19884,
                      "src": "23376:27:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19436,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "23376:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19438,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23376:27:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 19445,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19439,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19392,
                          "src": "23418:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 19440,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17985,
                        "src": "23418:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 19443,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19441,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19392,
                          "src": "23433:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 19442,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "winningVote",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17959,
                        "src": "23433:20:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "23418:36:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 19444,
                      "name": "executionBar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19419,
                      "src": "23457:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23418:51:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 19709,
                    "nodeType": "Block",
                    "src": "23966:3135:66",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 19488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19484,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "23984:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19485,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "23984:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19486,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "24002:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 19487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Queued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "24002:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "23984:38:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 19558,
                        "nodeType": "IfStatement",
                        "src": "23980:944:66",
                        "trueBody": {
                          "id": 19557,
                          "nodeType": "Block",
                          "src": "24024:900:66",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19498,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19494,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 19489,
                                        "name": "now",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22173,
                                        "src": "24109:3:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19490,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19392,
                                            "src": "24115:8:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 19491,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "times",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17979,
                                          "src": "24115:14:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                            "typeString": "uint256[3] storage ref"
                                          }
                                        },
                                        "id": 19493,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 19492,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "24130:1:66",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "24115:17:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24109:23:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 19495,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "24108:25:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19496,
                                    "name": "params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19398,
                                    "src": "24137:6:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                    }
                                  },
                                  "id": 19497,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "queuedVotePeriodLimit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17914,
                                  "src": "24137:28:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24108:57:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 19555,
                                "nodeType": "Block",
                                "src": "24372:538:66",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19525,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 19518,
                                        "name": "confidenceThreshold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19437,
                                        "src": "24394:19:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 19520,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19392,
                                              "src": "24426:8:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 19521,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "paramsHash",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17965,
                                            "src": "24426:19:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 19522,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19392,
                                              "src": "24447:8:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 19523,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "organizationId",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17953,
                                            "src": "24447:23:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 19519,
                                          "name": "threshold",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19324,
                                          "src": "24416:9:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                                            "typeString": "function (bytes32,bytes32) view returns (uint256)"
                                          }
                                        },
                                        "id": 19524,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "24416:55:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24394:77:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 19526,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24394:77:66"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19531,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 19528,
                                            "name": "_proposalId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19383,
                                            "src": "24504:11:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 19527,
                                          "name": "_score",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20395,
                                          "src": "24497:6:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                            "typeString": "function (bytes32) view returns (uint256)"
                                          }
                                        },
                                        "id": 19529,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "24497:19:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 19530,
                                        "name": "confidenceThreshold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19437,
                                        "src": "24519:19:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24497:41:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 19554,
                                    "nodeType": "IfStatement",
                                    "src": "24493:399:66",
                                    "trueBody": {
                                      "id": 19553,
                                      "nodeType": "Block",
                                      "src": "24540:352:66",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19537,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19532,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 19392,
                                                "src": "24633:8:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 19534,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "state",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 17957,
                                              "src": "24633:14:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19535,
                                                "name": "ProposalState",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 17903,
                                                "src": "24650:13:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                                }
                                              },
                                              "id": 19536,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "PreBoosted",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "24650:24:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "src": "24633:41:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                                            }
                                          },
                                          "id": 19538,
                                          "nodeType": "ExpressionStatement",
                                          "src": "24633:41:66"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19545,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19539,
                                                  "name": "proposal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19392,
                                                  "src": "24770:8:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                  }
                                                },
                                                "id": 19542,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "times",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 17979,
                                                "src": "24770:14:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                                  "typeString": "uint256[3] storage ref"
                                                }
                                              },
                                              "id": 19543,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "32",
                                                "id": 19541,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "24785:1:66",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_2_by_1",
                                                  "typeString": "int_const 2"
                                                },
                                                "value": "2"
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "24770:17:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "id": 19544,
                                              "name": "now",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22173,
                                              "src": "24790:3:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "24770:23:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 19546,
                                          "nodeType": "ExpressionStatement",
                                          "src": "24770:23:66"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19551,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19547,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 19392,
                                                "src": "24819:8:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 19549,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "confidenceThreshold",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 17973,
                                              "src": "24819:28:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "id": 19550,
                                              "name": "confidenceThreshold",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19437,
                                              "src": "24850:19:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "24819:50:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 19552,
                                          "nodeType": "ExpressionStatement",
                                          "src": "24819:50:66"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 19556,
                              "nodeType": "IfStatement",
                              "src": "24104:806:66",
                              "trueBody": {
                                "id": 19517,
                                "nodeType": "Block",
                                "src": "24167:199:66",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19504,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 19499,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19392,
                                          "src": "24189:8:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 19501,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "state",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17957,
                                        "src": "24189:14:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$17903",
                                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 19502,
                                          "name": "ProposalState",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17903,
                                          "src": "24206:13:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                            "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                          }
                                        },
                                        "id": 19503,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "ExpiredInQueue",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "24206:28:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$17903",
                                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                                        }
                                      },
                                      "src": "24189:45:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "id": 19505,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24189:45:66"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19510,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 19506,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19392,
                                          "src": "24256:8:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 19508,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "winningVote",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17959,
                                        "src": "24256:20:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 19509,
                                        "name": "NO",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18096,
                                        "src": "24279:2:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24256:25:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 19511,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24256:25:66"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19515,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 19512,
                                        "name": "executionState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19429,
                                        "src": "24303:14:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                          "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 19513,
                                          "name": "ExecutionState",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17910,
                                          "src": "24320:14:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                                            "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                          }
                                        },
                                        "id": 19514,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "QueueTimeOut",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "24320:27:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                          "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                        }
                                      },
                                      "src": "24303:44:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                        "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                      }
                                    },
                                    "id": 19516,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24303:44:66"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 19563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19559,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "24942:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19560,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "24942:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19561,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "24960:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 19562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PreBoosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "24960:24:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "24942:42:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 19708,
                        "nodeType": "IfStatement",
                        "src": "24938:2153:66",
                        "trueBody": {
                          "id": 19707,
                          "nodeType": "Block",
                          "src": "24986:2105:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 19571,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 19564,
                                  "name": "confidenceThreshold",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19437,
                                  "src": "25004:19:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 19566,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19392,
                                        "src": "25036:8:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 19567,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "paramsHash",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17965,
                                      "src": "25036:19:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 19568,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19392,
                                        "src": "25057:8:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 19569,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "organizationId",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17953,
                                      "src": "25057:23:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 19565,
                                    "name": "threshold",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19324,
                                    "src": "25026:9:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                                      "typeString": "function (bytes32,bytes32) view returns (uint256)"
                                    }
                                  },
                                  "id": 19570,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25026:55:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25004:77:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19572,
                              "nodeType": "ExpressionStatement",
                              "src": "25004:77:66"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19578,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 19573,
                                        "name": "now",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22173,
                                        "src": "25164:3:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19574,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19392,
                                            "src": "25170:8:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 19575,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "times",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17979,
                                          "src": "25170:14:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                            "typeString": "uint256[3] storage ref"
                                          }
                                        },
                                        "id": 19577,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "32",
                                          "id": 19576,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "25185:1:66",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "25170:17:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25164:23:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 19579,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "25163:25:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19580,
                                    "name": "params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19398,
                                    "src": "25192:6:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                    }
                                  },
                                  "id": 19581,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "preBoostedVotePeriodLimit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17918,
                                  "src": "25192:32:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25163:61:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 19705,
                                "nodeType": "Block",
                                "src": "26530:547:66",
                                "statements": [
                                  {
                                    "assignments": [
                                      19667
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 19667,
                                        "name": "proposalScore",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 19705,
                                        "src": "26591:21:66",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 19666,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "26591:7:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 19671,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 19669,
                                          "name": "_proposalId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19383,
                                          "src": "26622:11:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 19668,
                                        "name": "_score",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20395,
                                        "src": "26615:6:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                          "typeString": "function (bytes32) view returns (uint256)"
                                        }
                                      },
                                      "id": 19670,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26615:19:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "26591:43:66"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19678,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 19672,
                                        "name": "proposalScore",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19667,
                                        "src": "26660:13:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 19676,
                                            "name": "confidenceThreshold",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19437,
                                            "src": "26710:19:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 19673,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19392,
                                              "src": "26677:8:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 19674,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "confidenceThreshold",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17973,
                                            "src": "26677:28:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 19675,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "min",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 21147,
                                          "src": "26677:32:66",
                                          "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": 19677,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "26677:53:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "26660:70:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "condition": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 19690,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19687,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19392,
                                            "src": "26828:8:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 19688,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "confidenceThreshold",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17973,
                                          "src": "26828:28:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 19689,
                                          "name": "proposalScore",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19667,
                                          "src": "26859:13:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "26828:44:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": null,
                                      "id": 19703,
                                      "nodeType": "IfStatement",
                                      "src": "26824:235:66",
                                      "trueBody": {
                                        "id": 19702,
                                        "nodeType": "Block",
                                        "src": "26874:185:66",
                                        "statements": [
                                          {
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 19695,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19691,
                                                  "name": "proposal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19392,
                                                  "src": "26900:8:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                  }
                                                },
                                                "id": 19693,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "memberName": "confidenceThreshold",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 17973,
                                                "src": "26900:28:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "argumentTypes": null,
                                                "id": 19694,
                                                "name": "confidenceThreshold",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 19437,
                                                "src": "26931:19:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "26900:50:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 19696,
                                            "nodeType": "ExpressionStatement",
                                            "src": "26900:50:66"
                                          },
                                          {
                                            "eventCall": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 19698,
                                                  "name": "_proposalId",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19383,
                                                  "src": "27003:11:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "id": 19699,
                                                  "name": "confidenceThreshold",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19437,
                                                  "src": "27016:19:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "id": 19697,
                                                "name": "ConfidenceLevelChange",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18070,
                                                "src": "26981:21:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                                                  "typeString": "function (bytes32,uint256)"
                                                }
                                              },
                                              "id": 19700,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "26981:55:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$__$",
                                                "typeString": "tuple()"
                                              }
                                            },
                                            "id": 19701,
                                            "nodeType": "EmitStatement",
                                            "src": "26976:60:66"
                                          }
                                        ]
                                      }
                                    },
                                    "id": 19704,
                                    "nodeType": "IfStatement",
                                    "src": "26656:403:66",
                                    "trueBody": {
                                      "id": 19686,
                                      "nodeType": "Block",
                                      "src": "26732:86:66",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19684,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19679,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 19392,
                                                "src": "26758:8:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 19681,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "state",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 17957,
                                              "src": "26758:14:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19682,
                                                "name": "ProposalState",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 17903,
                                                "src": "26775:13:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                                }
                                              },
                                              "id": 19683,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "Queued",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "26775:20:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "src": "26758:37:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                                            }
                                          },
                                          "id": 19685,
                                          "nodeType": "ExpressionStatement",
                                          "src": "26758:37:66"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 19706,
                              "nodeType": "IfStatement",
                              "src": "25159:1918:66",
                              "trueBody": {
                                "id": 19665,
                                "nodeType": "Block",
                                "src": "25226:1298:66",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19587,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 19584,
                                            "name": "_proposalId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19383,
                                            "src": "25259:11:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 19583,
                                          "name": "_score",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20395,
                                          "src": "25252:6:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                            "typeString": "function (bytes32) view returns (uint256)"
                                          }
                                        },
                                        "id": 19585,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "25252:19:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 19586,
                                        "name": "confidenceThreshold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19437,
                                        "src": "25274:19:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25252:41:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 19663,
                                      "nodeType": "Block",
                                      "src": "26420:86:66",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19661,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19656,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 19392,
                                                "src": "26446:8:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 19658,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "state",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 17957,
                                              "src": "26446:14:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19659,
                                                "name": "ProposalState",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 17903,
                                                "src": "26463:13:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                                }
                                              },
                                              "id": 19660,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "Queued",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "26463:20:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "src": "26446:37:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                                            }
                                          },
                                          "id": 19662,
                                          "nodeType": "ExpressionStatement",
                                          "src": "26446:37:66"
                                        }
                                      ]
                                    },
                                    "id": 19664,
                                    "nodeType": "IfStatement",
                                    "src": "25248:1258:66",
                                    "trueBody": {
                                      "id": 19655,
                                      "nodeType": "Block",
                                      "src": "25295:1119:66",
                                      "statements": [
                                        {
                                          "condition": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 19593,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 19588,
                                                "name": "orgBoostedProposalsCnt",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18082,
                                                "src": "25325:22:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                  "typeString": "mapping(bytes32 => uint256)"
                                                }
                                              },
                                              "id": 19591,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19589,
                                                  "name": "proposal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19392,
                                                  "src": "25348:8:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                  }
                                                },
                                                "id": 19590,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "organizationId",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 17953,
                                                "src": "25348:23:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "25325:47:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 19592,
                                              "name": "MAX_BOOSTED_PROPOSALS",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18109,
                                              "src": "25375:21:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "25325:71:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseBody": null,
                                          "id": 19654,
                                          "nodeType": "IfStatement",
                                          "src": "25321:1071:66",
                                          "trueBody": {
                                            "id": 19653,
                                            "nodeType": "Block",
                                            "src": "25398:994:66",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19599,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 19594,
                                                      "name": "proposal",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 19392,
                                                      "src": "25493:8:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                      }
                                                    },
                                                    "id": 19596,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "memberName": "state",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 17957,
                                                    "src": "25493:14:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 19597,
                                                      "name": "ProposalState",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 17903,
                                                      "src": "25510:13:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                                        "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                                      }
                                                    },
                                                    "id": 19598,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberName": "Boosted",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": null,
                                                    "src": "25510:21:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                                    }
                                                  },
                                                  "src": "25493:38:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                                  }
                                                },
                                                "id": 19600,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25493:38:66"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19607,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 19601,
                                                        "name": "proposal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 19392,
                                                        "src": "25632:8:66",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                        }
                                                      },
                                                      "id": 19604,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "times",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 17979,
                                                      "src": "25632:14:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                                        "typeString": "uint256[3] storage ref"
                                                      }
                                                    },
                                                    "id": 19605,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "hexValue": "31",
                                                      "id": 19603,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "25647:1:66",
                                                      "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": "25632:17:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "id": 19606,
                                                    "name": "now",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 22173,
                                                    "src": "25652:3:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "25632:23:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 19608,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25632:23:66"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19613,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "UnaryOperation",
                                                  "operator": "++",
                                                  "prefix": false,
                                                  "src": "25685:49:66",
                                                  "subExpression": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 19609,
                                                      "name": "orgBoostedProposalsCnt",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 18082,
                                                      "src": "25685:22:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                        "typeString": "mapping(bytes32 => uint256)"
                                                      }
                                                    },
                                                    "id": 19612,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 19610,
                                                        "name": "proposal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 19392,
                                                        "src": "25708:8:66",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                        }
                                                      },
                                                      "id": 19611,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "organizationId",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 17953,
                                                      "src": "25708:23:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "25685:47:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 19614,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25685:49:66"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19620,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "id": 19615,
                                                    "name": "averageDownstakesOfBoosted",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 19434,
                                                    "src": "25868:26:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 19616,
                                                      "name": "averagesDownstakesOfBoosted",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 18090,
                                                      "src": "25897:27:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                        "typeString": "mapping(bytes32 => uint256)"
                                                      }
                                                    },
                                                    "id": 19619,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 19617,
                                                        "name": "proposal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 19392,
                                                        "src": "25925:8:66",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                        }
                                                      },
                                                      "id": 19618,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "organizationId",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 17953,
                                                      "src": "25925:23:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "25897:52:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "25868:81:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 19621,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25868:81:66"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19651,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 19622,
                                                      "name": "averagesDownstakesOfBoosted",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 18090,
                                                      "src": "26045:27:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                        "typeString": "mapping(bytes32 => uint256)"
                                                      }
                                                    },
                                                    "id": 19625,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 19623,
                                                        "name": "proposal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 19392,
                                                        "src": "26073:8:66",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                        }
                                                      },
                                                      "id": 19624,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "organizationId",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 17953,
                                                      "src": "26073:23:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "26045:52:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "commonType": {
                                                          "typeIdentifier": "t_int256",
                                                          "typeString": "int256"
                                                        },
                                                        "id": 19649,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "argumentTypes": null,
                                                          "arguments": [
                                                            {
                                                              "argumentTypes": null,
                                                              "id": 19628,
                                                              "name": "averageDownstakesOfBoosted",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 19434,
                                                              "src": "26147:26:66",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            ],
                                                            "id": 19627,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "26140:6:66",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_type$_t_int256_$",
                                                              "typeString": "type(int256)"
                                                            },
                                                            "typeName": "int256"
                                                          },
                                                          "id": 19629,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "typeConversion",
                                                          "lValueRequested": false,
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "26140:34:66",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "+",
                                                        "rightExpression": {
                                                          "argumentTypes": null,
                                                          "components": [
                                                            {
                                                              "argumentTypes": null,
                                                              "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                              },
                                                              "id": 19647,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "leftExpression": {
                                                                "argumentTypes": null,
                                                                "components": [
                                                                  {
                                                                    "argumentTypes": null,
                                                                    "commonType": {
                                                                      "typeIdentifier": "t_int256",
                                                                      "typeString": "int256"
                                                                    },
                                                                    "id": 19639,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                      "argumentTypes": null,
                                                                      "arguments": [
                                                                        {
                                                                          "argumentTypes": null,
                                                                          "baseExpression": {
                                                                            "argumentTypes": null,
                                                                            "expression": {
                                                                              "argumentTypes": null,
                                                                              "id": 19631,
                                                                              "name": "proposal",
                                                                              "nodeType": "Identifier",
                                                                              "overloadedDeclarations": [],
                                                                              "referencedDeclaration": 19392,
                                                                              "src": "26218:8:66",
                                                                              "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                                              }
                                                                            },
                                                                            "id": 19632,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "stakes",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 17997,
                                                                            "src": "26218:15:66",
                                                                            "typeDescriptions": {
                                                                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                                              "typeString": "mapping(uint256 => uint256)"
                                                                            }
                                                                          },
                                                                          "id": 19634,
                                                                          "indexExpression": {
                                                                            "argumentTypes": null,
                                                                            "id": 19633,
                                                                            "name": "NO",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 18096,
                                                                            "src": "26234:2:66",
                                                                            "typeDescriptions": {
                                                                              "typeIdentifier": "t_uint256",
                                                                              "typeString": "uint256"
                                                                            }
                                                                          },
                                                                          "isConstant": false,
                                                                          "isLValue": true,
                                                                          "isPure": false,
                                                                          "lValueRequested": false,
                                                                          "nodeType": "IndexAccess",
                                                                          "src": "26218:19:66",
                                                                          "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          }
                                                                        }
                                                                      ],
                                                                      "expression": {
                                                                        "argumentTypes": [
                                                                          {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          }
                                                                        ],
                                                                        "id": 19630,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "26211:6:66",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_type$_t_int256_$",
                                                                          "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": "int256"
                                                                      },
                                                                      "id": 19635,
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": false,
                                                                      "kind": "typeConversion",
                                                                      "lValueRequested": false,
                                                                      "names": [],
                                                                      "nodeType": "FunctionCall",
                                                                      "src": "26211:27:66",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                      }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "-",
                                                                    "rightExpression": {
                                                                      "argumentTypes": null,
                                                                      "arguments": [
                                                                        {
                                                                          "argumentTypes": null,
                                                                          "id": 19637,
                                                                          "name": "averageDownstakesOfBoosted",
                                                                          "nodeType": "Identifier",
                                                                          "overloadedDeclarations": [],
                                                                          "referencedDeclaration": 19434,
                                                                          "src": "26246:26:66",
                                                                          "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          }
                                                                        }
                                                                      ],
                                                                      "expression": {
                                                                        "argumentTypes": [
                                                                          {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          }
                                                                        ],
                                                                        "id": 19636,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "26239:6:66",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_type$_t_int256_$",
                                                                          "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": "int256"
                                                                      },
                                                                      "id": 19638,
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": false,
                                                                      "kind": "typeConversion",
                                                                      "lValueRequested": false,
                                                                      "names": [],
                                                                      "nodeType": "FunctionCall",
                                                                      "src": "26239:34:66",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                      }
                                                                    },
                                                                    "src": "26211:62:66",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_int256",
                                                                      "typeString": "int256"
                                                                    }
                                                                  }
                                                                ],
                                                                "id": 19640,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "26210:64:66",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_int256",
                                                                  "typeString": "int256"
                                                                }
                                                              },
                                                              "nodeType": "BinaryOperation",
                                                              "operator": "/",
                                                              "rightExpression": {
                                                                "argumentTypes": null,
                                                                "arguments": [
                                                                  {
                                                                    "argumentTypes": null,
                                                                    "baseExpression": {
                                                                      "argumentTypes": null,
                                                                      "id": 19642,
                                                                      "name": "orgBoostedProposalsCnt",
                                                                      "nodeType": "Identifier",
                                                                      "overloadedDeclarations": [],
                                                                      "referencedDeclaration": 18082,
                                                                      "src": "26315:22:66",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                                        "typeString": "mapping(bytes32 => uint256)"
                                                                      }
                                                                    },
                                                                    "id": 19645,
                                                                    "indexExpression": {
                                                                      "argumentTypes": null,
                                                                      "expression": {
                                                                        "argumentTypes": null,
                                                                        "id": 19643,
                                                                        "name": "proposal",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 19392,
                                                                        "src": "26338:8:66",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                                        }
                                                                      },
                                                                      "id": 19644,
                                                                      "isConstant": false,
                                                                      "isLValue": true,
                                                                      "isPure": false,
                                                                      "lValueRequested": false,
                                                                      "memberName": "organizationId",
                                                                      "nodeType": "MemberAccess",
                                                                      "referencedDeclaration": 17953,
                                                                      "src": "26338:23:66",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                      }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "26315:47:66",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    }
                                                                  }
                                                                ],
                                                                "expression": {
                                                                  "argumentTypes": [
                                                                    {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    }
                                                                  ],
                                                                  "id": 19641,
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": true,
                                                                  "lValueRequested": false,
                                                                  "nodeType": "ElementaryTypeNameExpression",
                                                                  "src": "26308:6:66",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                    "typeString": "type(int256)"
                                                                  },
                                                                  "typeName": "int256"
                                                                },
                                                                "id": 19646,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "26308:55:66",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_int256",
                                                                  "typeString": "int256"
                                                                }
                                                              },
                                                              "src": "26210:153:66",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                              }
                                                            }
                                                          ],
                                                          "id": 19648,
                                                          "isConstant": false,
                                                          "isInlineArray": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "nodeType": "TupleExpression",
                                                          "src": "26209:155:66",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                          }
                                                        },
                                                        "src": "26140:224:66",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_int256",
                                                          "typeString": "int256"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_int256",
                                                          "typeString": "int256"
                                                        }
                                                      ],
                                                      "id": 19626,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "nodeType": "ElementaryTypeNameExpression",
                                                      "src": "26132:7:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_uint256_$",
                                                        "typeString": "type(uint256)"
                                                      },
                                                      "typeName": "uint256"
                                                    },
                                                    "id": 19650,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "26132:233:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "26045:320:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 19652,
                                                "nodeType": "ExpressionStatement",
                                                "src": "26045:320:66"
                                              }
                                            ]
                                          }
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 19710,
                  "nodeType": "IfStatement",
                  "src": "23414:3687:66",
                  "trueBody": {
                    "id": 19483,
                    "nodeType": "Block",
                    "src": "23471:489:66",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 19450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19446,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "23550:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19447,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "23550:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19448,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "23568:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 19449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Queued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "23568:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "23550:38:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            },
                            "id": 19461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19457,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19392,
                                "src": "23680:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 19458,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "state",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17957,
                              "src": "23680:14:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19459,
                                "name": "ProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17903,
                                "src": "23698:13:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                }
                              },
                              "id": 19460,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "PreBoosted",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "23698:24:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            },
                            "src": "23680:42:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 19473,
                            "nodeType": "Block",
                            "src": "23815:82:66",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 19468,
                                    "name": "executionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19429,
                                    "src": "23833:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19469,
                                      "name": "ExecutionState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17910,
                                      "src": "23850:14:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                                        "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                      }
                                    },
                                    "id": 19470,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "BoostedBarCrossed",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "23850:32:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                    }
                                  },
                                  "src": "23833:49:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "id": 19472,
                                "nodeType": "ExpressionStatement",
                                "src": "23833:49:66"
                              }
                            ]
                          },
                          "id": 19474,
                          "nodeType": "IfStatement",
                          "src": "23676:221:66",
                          "trueBody": {
                            "id": 19467,
                            "nodeType": "Block",
                            "src": "23724:85:66",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19465,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 19462,
                                    "name": "executionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19429,
                                    "src": "23742:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19463,
                                      "name": "ExecutionState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17910,
                                      "src": "23759:14:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                                        "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                      }
                                    },
                                    "id": 19464,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "PreBoostedBarCrossed",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "23759:35:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                    }
                                  },
                                  "src": "23742:52:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "id": 19466,
                                "nodeType": "ExpressionStatement",
                                "src": "23742:52:66"
                              }
                            ]
                          }
                        },
                        "id": 19475,
                        "nodeType": "IfStatement",
                        "src": "23546:351:66",
                        "trueBody": {
                          "id": 19456,
                          "nodeType": "Block",
                          "src": "23590:80:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 19454,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 19451,
                                  "name": "executionState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19429,
                                  "src": "23608:14:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19452,
                                    "name": "ExecutionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17910,
                                    "src": "23625:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                    }
                                  },
                                  "id": 19453,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "QueueBarCrossed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "23625:30:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "src": "23608:47:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                  "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                }
                              },
                              "id": 19455,
                              "nodeType": "ExpressionStatement",
                              "src": "23608:47:66"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19476,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "23910:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19478,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "23910:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19479,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "23927:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 19480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Executed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "23927:22:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "23910:39:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "id": 19482,
                        "nodeType": "ExpressionStatement",
                        "src": "23910:39:66"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 19723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 19715,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19711,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "27116:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19712,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "27116:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19713,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "27134:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 19714,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Boosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "27134:21:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "27116:39:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19716,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "27115:41:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 19721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19717,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "27173:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19718,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "27173:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19719,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "27191:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 19720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "QuietEndingPeriod",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "27191:31:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "27173:49:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19722,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "27172:51:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "27115:108:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19749,
                  "nodeType": "IfStatement",
                  "src": "27111:405:66",
                  "trueBody": {
                    "id": 19748,
                    "nodeType": "Block",
                    "src": "27225:291:66",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19733,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19729,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 19724,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22173,
                                  "src": "27302:3:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19725,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19392,
                                      "src": "27308:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 19726,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "times",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17979,
                                    "src": "27308:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                      "typeString": "uint256[3] storage ref"
                                    }
                                  },
                                  "id": 19728,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 19727,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27323:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "27308:17:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "27302:23:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 19730,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "27301:25:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19731,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "27330:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19732,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "currentBoostedVotePeriodLimit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17963,
                            "src": "27330:38:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "27301:67:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 19747,
                        "nodeType": "IfStatement",
                        "src": "27297:209:66",
                        "trueBody": {
                          "id": 19746,
                          "nodeType": "Block",
                          "src": "27370:136:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 19739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19734,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19392,
                                    "src": "27388:8:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 19736,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "state",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17957,
                                  "src": "27388:14:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19737,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17903,
                                    "src": "27405:13:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                    }
                                  },
                                  "id": 19738,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Executed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "27405:22:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "src": "27388:39:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "id": 19740,
                              "nodeType": "ExpressionStatement",
                              "src": "27388:39:66"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 19744,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 19741,
                                  "name": "executionState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19429,
                                  "src": "27445:14:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19742,
                                    "name": "ExecutionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17910,
                                    "src": "27462:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                    }
                                  },
                                  "id": 19743,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "BoostedTimeOut",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "27462:29:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "src": "27445:46:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                  "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                }
                              },
                              "id": 19745,
                              "nodeType": "ExpressionStatement",
                              "src": "27445:46:66"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ExecutionState_$17910",
                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                    },
                    "id": 19753,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 19750,
                      "name": "executionState",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19429,
                      "src": "27530:14:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ExecutionState_$17910",
                        "typeString": "enum GenesisProtocolLogic.ExecutionState"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19751,
                        "name": "ExecutionState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17910,
                        "src": "27548:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                          "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                        }
                      },
                      "id": 19752,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "None",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "27548:19:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ExecutionState_$17910",
                        "typeString": "enum GenesisProtocolLogic.ExecutionState"
                      }
                    },
                    "src": "27530:37:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19864,
                  "nodeType": "IfStatement",
                  "src": "27526:1431:66",
                  "trueBody": {
                    "id": 19863,
                    "nodeType": "Block",
                    "src": "27569:1388:66",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 19764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                  "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                },
                                "id": 19757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 19754,
                                  "name": "executionState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19429,
                                  "src": "27588:14:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19755,
                                    "name": "ExecutionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17910,
                                    "src": "27606:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                    }
                                  },
                                  "id": 19756,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "BoostedTimeOut",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "27606:29:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "src": "27588:47:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 19758,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "27587:49:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                  "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                },
                                "id": 19762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 19759,
                                  "name": "executionState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19429,
                                  "src": "27657:14:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19760,
                                    "name": "ExecutionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17910,
                                    "src": "27675:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                    }
                                  },
                                  "id": 19761,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "BoostedBarCrossed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "27675:32:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "src": "27657:50:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 19763,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "27656:52:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "27587:121:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 19827,
                        "nodeType": "IfStatement",
                        "src": "27583:938:66",
                        "trueBody": {
                          "id": 19826,
                          "nodeType": "Block",
                          "src": "27710:811:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 19776,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 19765,
                                    "name": "orgBoostedProposalsCnt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18082,
                                    "src": "27728:22:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                      "typeString": "mapping(bytes32 => uint256)"
                                    }
                                  },
                                  "id": 19768,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19766,
                                      "name": "tmpProposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19405,
                                      "src": "27751:11:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                      }
                                    },
                                    "id": 19767,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17953,
                                    "src": "27751:26:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "27728:50:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 19774,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "27852:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 19769,
                                        "name": "orgBoostedProposalsCnt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18082,
                                        "src": "27797:22:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                          "typeString": "mapping(bytes32 => uint256)"
                                        }
                                      },
                                      "id": 19772,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 19770,
                                          "name": "tmpProposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19405,
                                          "src": "27820:11:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                          }
                                        },
                                        "id": 19771,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "organizationId",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17953,
                                        "src": "27820:26:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "27797:50:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 19773,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 21263,
                                    "src": "27797:54:66",
                                    "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": 19775,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "27797:57:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "27728:126:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19777,
                              "nodeType": "ExpressionStatement",
                              "src": "27728:126:66"
                            },
                            {
                              "assignments": [
                                19779
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19779,
                                  "name": "boostedProposals",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19826,
                                  "src": "27969:24:66",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 19778,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "27969:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19784,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 19780,
                                  "name": "orgBoostedProposalsCnt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18082,
                                  "src": "27996:22:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                    "typeString": "mapping(bytes32 => uint256)"
                                  }
                                },
                                "id": 19783,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19781,
                                    "name": "tmpProposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19405,
                                    "src": "28019:11:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                    }
                                  },
                                  "id": 19782,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "organizationId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17953,
                                  "src": "28019:26:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "27996:50:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "27969:77:66"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 19785,
                                  "name": "boostedProposals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19779,
                                  "src": "28068:16:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 19786,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "28088:1:66",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "28068:21:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 19824,
                                "nodeType": "Block",
                                "src": "28194:313:66",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19801,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 19796,
                                        "name": "averageDownstakesOfBoosted",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19434,
                                        "src": "28216:26:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 19797,
                                          "name": "averagesDownstakesOfBoosted",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18090,
                                          "src": "28245:27:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                            "typeString": "mapping(bytes32 => uint256)"
                                          }
                                        },
                                        "id": 19800,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19798,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19392,
                                            "src": "28273:8:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 19799,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "organizationId",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17953,
                                          "src": "28273:23:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "28245:52:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "28216:81:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 19802,
                                    "nodeType": "ExpressionStatement",
                                    "src": "28216:81:66"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19822,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 19803,
                                          "name": "averagesDownstakesOfBoosted",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18090,
                                          "src": "28319:27:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                            "typeString": "mapping(bytes32 => uint256)"
                                          }
                                        },
                                        "id": 19806,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19804,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19392,
                                            "src": "28347:8:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 19805,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "organizationId",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17953,
                                          "src": "28347:23:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "28319:52:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 19821,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 19814,
                                                      "name": "proposal",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 19392,
                                                      "src": "28450:8:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                      }
                                                    },
                                                    "id": 19815,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "stakes",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 17997,
                                                    "src": "28450:15:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                      "typeString": "mapping(uint256 => uint256)"
                                                    }
                                                  },
                                                  "id": 19817,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "id": 19816,
                                                    "name": "NO",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 18096,
                                                    "src": "28466:2:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "28450:19:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 19811,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "argumentTypes": null,
                                                        "id": 19809,
                                                        "name": "boostedProposals",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 19779,
                                                        "src": "28426:16:66",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "+",
                                                      "rightExpression": {
                                                        "argumentTypes": null,
                                                        "hexValue": "31",
                                                        "id": 19810,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "28443:1:66",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_1_by_1",
                                                          "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                      },
                                                      "src": "28426:18:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 19807,
                                                      "name": "averageDownstakesOfBoosted",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 19434,
                                                      "src": "28395:26:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 19808,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mul",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 21215,
                                                    "src": "28395:30:66",
                                                    "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": 19812,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "28395:50:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 19813,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 21263,
                                                "src": "28395:54:66",
                                                "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": 19818,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "28395:75:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 19819,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "28394:77:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 19820,
                                          "name": "boostedProposals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19779,
                                          "src": "28472:16:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "28394:94:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "28319:169:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 19823,
                                    "nodeType": "ExpressionStatement",
                                    "src": "28319:169:66"
                                  }
                                ]
                              },
                              "id": 19825,
                              "nodeType": "IfStatement",
                              "src": "28064:443:66",
                              "trueBody": {
                                "id": 19795,
                                "nodeType": "Block",
                                "src": "28091:97:66",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19793,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 19788,
                                          "name": "averagesDownstakesOfBoosted",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18090,
                                          "src": "28113:27:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                            "typeString": "mapping(bytes32 => uint256)"
                                          }
                                        },
                                        "id": 19791,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19789,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19392,
                                            "src": "28141:8:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 19790,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "organizationId",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17953,
                                          "src": "28141:23:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "28113:52:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 19792,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "28168:1:66",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "28113:56:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 19794,
                                    "nodeType": "ExpressionStatement",
                                    "src": "28113:56:66"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19829,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19383,
                              "src": "28568:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 19830,
                                "name": "organizations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18086,
                                "src": "28593:13:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 19833,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19831,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19392,
                                  "src": "28607:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 19832,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "organizationId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17953,
                                "src": "28607:23:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "28593:38:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19834,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19392,
                                "src": "28645:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 19835,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17959,
                              "src": "28645:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19836,
                              "name": "totalReputation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19409,
                              "src": "28679:15:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19828,
                            "name": "ExecuteProposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20478,
                            "src": "28539:15:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,uint256,uint256)"
                            }
                          },
                          "id": 19837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28539:169:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19838,
                        "nodeType": "EmitStatement",
                        "src": "28534:174:66"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19840,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19383,
                              "src": "28745:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19841,
                              "name": "executionState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19429,
                              "src": "28758:14:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                "typeString": "enum GenesisProtocolLogic.ExecutionState"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                "typeString": "enum GenesisProtocolLogic.ExecutionState"
                              }
                            ],
                            "id": 19839,
                            "name": "GPExecuteProposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18056,
                            "src": "28727:17:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_ExecutionState_$17910_$returns$__$",
                              "typeString": "function (bytes32,enum GenesisProtocolLogic.ExecutionState)"
                            }
                          },
                          "id": 19842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28727:46:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19843,
                        "nodeType": "EmitStatement",
                        "src": "28722:51:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19849,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19383,
                              "src": "28848:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19851,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19392,
                                    "src": "28865:8:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 19852,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "winningVote",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17959,
                                  "src": "28865:20:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 19850,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "28861:3:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int256_$",
                                  "typeString": "type(int256)"
                                },
                                "typeName": "int"
                              },
                              "id": 19853,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28861:25:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19845,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19392,
                                    "src": "28812:8:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 19846,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "callbacks",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17955,
                                  "src": "28812:18:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 19844,
                                "name": "ProposalExecuteInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20583,
                                "src": "28787:24:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ProposalExecuteInterface_$20583_$",
                                  "typeString": "type(contract ProposalExecuteInterface)"
                                }
                              },
                              "id": 19847,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28787:44:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ProposalExecuteInterface_$20583",
                                "typeString": "contract ProposalExecuteInterface"
                              }
                            },
                            "id": 19848,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "executeProposal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20582,
                            "src": "28787:60:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_int256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,int256) external returns (bool)"
                            }
                          },
                          "id": 19854,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28787:100:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19855,
                        "nodeType": "ExpressionStatement",
                        "src": "28787:100:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19856,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "28901:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19858,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoBounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17969,
                            "src": "28901:18:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19859,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "28922:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19860,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "daoBountyRemain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17967,
                            "src": "28922:24:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "28901:45:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19862,
                        "nodeType": "ExpressionStatement",
                        "src": "28901:45:66"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                    },
                    "id": 19869,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19865,
                        "name": "tmpProposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19405,
                        "src": "28970:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 19866,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17957,
                      "src": "28970:17:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19867,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19392,
                        "src": "28991:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 19868,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17957,
                      "src": "28991:14:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      }
                    },
                    "src": "28970:35:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19877,
                  "nodeType": "IfStatement",
                  "src": "28966:111:66",
                  "trueBody": {
                    "id": 19876,
                    "nodeType": "Block",
                    "src": "29007:70:66",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19871,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19383,
                              "src": "29038:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19872,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19392,
                                "src": "29051:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 19873,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "state",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17957,
                              "src": "29051:14:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            ],
                            "id": 19870,
                            "name": "StateChange",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18050,
                            "src": "29026:11:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_ProposalState_$17903_$returns$__$",
                              "typeString": "function (bytes32,enum GenesisProtocolLogic.ProposalState)"
                            }
                          },
                          "id": 19874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29026:40:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19875,
                        "nodeType": "EmitStatement",
                        "src": "29021:45:66"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ExecutionState_$17910",
                          "typeString": "enum GenesisProtocolLogic.ExecutionState"
                        },
                        "id": 19881,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 19878,
                          "name": "executionState",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19429,
                          "src": "29094:14:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ExecutionState_$17910",
                            "typeString": "enum GenesisProtocolLogic.ExecutionState"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19879,
                            "name": "ExecutionState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17910,
                            "src": "29112:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                              "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                            }
                          },
                          "id": 19880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "None",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "29112:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ExecutionState_$17910",
                            "typeString": "enum GenesisProtocolLogic.ExecutionState"
                          }
                        },
                        "src": "29094:37:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 19882,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "29093:39:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19390,
                  "id": 19883,
                  "nodeType": "Return",
                  "src": "29086:46:66"
                }
              ]
            },
            "documentation": "@dev execute check if the proposal has been decided, and if so, execute the proposal\n@param _proposalId the id of the proposal\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 19885,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 19386,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19383,
                    "src": "22783:11:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 19387,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 19385,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 18145,
                  "src": "22775:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "22775:20:66"
              }
            ],
            "name": "_execute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19384,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19383,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 19885,
                  "src": "22745:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19382,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "22745:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22744:21:66"
            },
            "returnParameters": {
              "id": 19390,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19389,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 19885,
                  "src": "22804:4:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19388,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "22804:4:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22803:6:66"
            },
            "scope": 20436,
            "src": "22727:6412:66",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 20070,
              "nodeType": "Block",
              "src": "29520:1650:66",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 19905,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19899,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19889,
                            "src": "29572:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 19900,
                            "name": "NUM_OF_CHOICES",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18093,
                            "src": "29581:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "29572:23:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19902,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19889,
                            "src": "29599:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29607:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "29599:9:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "29572:36:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "77726f6e6720766f74652076616c7565",
                        "id": 19906,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "29610:18:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d82d70f2dacf08ad4e0d64af0a4b6b4468b32b18c064b4e753cdfba3c6e5a6a8",
                          "typeString": "literal_string \"wrong vote value\""
                        },
                        "value": "wrong vote value"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d82d70f2dacf08ad4e0d64af0a4b6b4468b32b18c064b4e753cdfba3c6e5a6a8",
                          "typeString": "literal_string \"wrong vote value\""
                        }
                      ],
                      "id": 19898,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "29564:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 19907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29564:65:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19908,
                  "nodeType": "ExpressionStatement",
                  "src": "29564:65:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 19912,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 19910,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19891,
                          "src": "29647:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 19911,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "29657:1:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "29647:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7374616b696e6720616d6f756e742073686f756c64206265203e30",
                        "id": 19913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "29660:29:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_91d4369e2212c0af5bece6ece1fcbdc47c9df9cbc0c01f068a62871681a0f61a",
                          "typeString": "literal_string \"staking amount should be >0\""
                        },
                        "value": "staking amount should be >0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_91d4369e2212c0af5bece6ece1fcbdc47c9df9cbc0c01f068a62871681a0f61a",
                          "typeString": "literal_string \"staking amount should be >0\""
                        }
                      ],
                      "id": 19909,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "29639:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 19914,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29639:51:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19915,
                  "nodeType": "ExpressionStatement",
                  "src": "29639:51:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 19917,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19887,
                        "src": "29714:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 19916,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19885,
                      "src": "29705:8:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 19918,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29705:21:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19922,
                  "nodeType": "IfStatement",
                  "src": "29701:63:66",
                  "trueBody": {
                    "id": 19921,
                    "nodeType": "Block",
                    "src": "29728:36:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 19919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "29749:4:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 19897,
                        "id": 19920,
                        "nodeType": "Return",
                        "src": "29742:11:66"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    19924
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19924,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 20070,
                      "src": "29773:25:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19923,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "29773:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19928,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 19925,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18078,
                      "src": "29801:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 19927,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 19926,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19887,
                      "src": "29811:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "29801:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "29773:50:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 19941,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 19933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19929,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19924,
                              "src": "29839:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19930,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "29839:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19931,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "29857:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 19932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PreBoosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "29857:24:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "29839:42:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19934,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "29838:44:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 19939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19935,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19924,
                              "src": "29899:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19936,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "29899:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19937,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "29917:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 19938,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Queued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "29917:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "29899:38:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19940,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "29898:40:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "29838:100:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19945,
                  "nodeType": "IfStatement",
                  "src": "29834:143:66",
                  "trueBody": {
                    "id": 19944,
                    "nodeType": "Block",
                    "src": "29940:37:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 19942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "29961:5:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 19897,
                        "id": 19943,
                        "nodeType": "Return",
                        "src": "29954:12:66"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    19947
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19947,
                      "name": "staker",
                      "nodeType": "VariableDeclaration",
                      "scope": 20070,
                      "src": "30055:21:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Staker"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19946,
                        "name": "Staker",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17951,
                        "src": "30055:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19952,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19948,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19924,
                        "src": "30079:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 19949,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18001,
                      "src": "30079:16:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$17951_storage_$",
                        "typeString": "mapping(address => struct GenesisProtocolLogic.Staker storage ref)"
                      }
                    },
                    "id": 19951,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 19950,
                      "name": "_staker",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19893,
                      "src": "30096:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "30079:25:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$17951_storage",
                      "typeString": "struct GenesisProtocolLogic.Staker storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "30055:49:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 19963,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19953,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19947,
                              "src": "30119:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 19954,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17948,
                            "src": "30119:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19955,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30135:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "30119:17:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19957,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "30118:19:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19961,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19958,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19947,
                              "src": "30142:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 19959,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "vote",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17946,
                            "src": "30142:11:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 19960,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19889,
                            "src": "30157:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30142:20:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19962,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "30141:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "30118:45:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19967,
                  "nodeType": "IfStatement",
                  "src": "30114:88:66",
                  "trueBody": {
                    "id": 19966,
                    "nodeType": "Block",
                    "src": "30165:37:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 19964,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "30186:5:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 19897,
                        "id": 19965,
                        "nodeType": "Return",
                        "src": "30179:12:66"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    19969
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19969,
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 20070,
                      "src": "30212:14:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19968,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "30212:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19971,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 19970,
                    "name": "_amount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19891,
                    "src": "30229:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "30212:24:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 19975,
                            "name": "_staker",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19893,
                            "src": "30280:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19977,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22229,
                                "src": "30297:4:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_GenesisProtocolLogic_$20436",
                                  "typeString": "contract GenesisProtocolLogic"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_GenesisProtocolLogic_$20436",
                                  "typeString": "contract GenesisProtocolLogic"
                                }
                              ],
                              "id": 19976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "30289:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 19978,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30289:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 19979,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19969,
                            "src": "30304:6:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 19973,
                            "name": "stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18103,
                            "src": "30254:12:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$22137",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 19974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22099,
                          "src": "30254:25:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 19980,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "30254:57:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6661696c207472616e736665722066726f6d207374616b6572",
                        "id": 19981,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "30313:27:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ad0934b2b17c5a144168f7c3b41e6e295357361c44445f6c875b7de168a8b283",
                          "typeString": "literal_string \"fail transfer from staker\""
                        },
                        "value": "fail transfer from staker"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ad0934b2b17c5a144168f7c3b41e6e295357361c44445f6c875b7de168a8b283",
                          "typeString": "literal_string \"fail transfer from staker\""
                        }
                      ],
                      "id": 19972,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "30246:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 19982,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30246:95:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19983,
                  "nodeType": "ExpressionStatement",
                  "src": "30246:95:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19992,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19984,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19924,
                        "src": "30351:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 19986,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalStakes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17971,
                      "src": "30351:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19990,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19969,
                          "src": "30399:6:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19987,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19924,
                            "src": "30374:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 19988,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalStakes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17971,
                          "src": "30374:20:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19989,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "30374:24:66",
                        "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": 19991,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "30374:32:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30351:55:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 19993,
                  "nodeType": "ExpressionStatement",
                  "src": "30351:55:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 20002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19994,
                        "name": "staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19947,
                        "src": "30447:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                        }
                      },
                      "id": 19996,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "amount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17948,
                      "src": "30447:13:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 20000,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19969,
                          "src": "30481:6:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19997,
                            "name": "staker",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19947,
                            "src": "30463:6:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                            }
                          },
                          "id": 19998,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17948,
                          "src": "30463:13:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19999,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "30463:17:66",
                        "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": 20001,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "30463:25:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30447:41:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 20003,
                  "nodeType": "ExpressionStatement",
                  "src": "30447:41:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 20008,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 20005,
                            "name": "staker",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19947,
                            "src": "30631:6:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                            }
                          },
                          "id": 20006,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17948,
                          "src": "30631:13:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                          "id": 20007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "30648:35:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                            "typeString": "int_const 3402...(31 digits omitted)...1456"
                          },
                          "value": "0x100000000000000000000000000000000"
                        },
                        "src": "30631:52:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7374616b696e6720616d6f756e7420697320746f6f2068696768",
                        "id": 20009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "30685:28:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c08e8b6b6438b031b9203bfd11dc79b9738fb9df8efea56d562c5a29a6e1f3ee",
                          "typeString": "literal_string \"staking amount is too high\""
                        },
                        "value": "staking amount is too high"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c08e8b6b6438b031b9203bfd11dc79b9738fb9df8efea56d562c5a29a6e1f3ee",
                          "typeString": "literal_string \"staking amount is too high\""
                        }
                      ],
                      "id": 20004,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "30623:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 20010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30623:91:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20011,
                  "nodeType": "ExpressionStatement",
                  "src": "30623:91:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 20016,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 20013,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19924,
                            "src": "30732:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 20014,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalStakes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17971,
                          "src": "30732:20:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                          "id": 20015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "30756:35:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                            "typeString": "int_const 3402...(31 digits omitted)...1456"
                          },
                          "value": "0x100000000000000000000000000000000"
                        },
                        "src": "30732:59:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "746f74616c207374616b657320697320746f6f2068696768",
                        "id": 20017,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "30793:26:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e3ddc8a760353c6cb4764665e8783f172d91728d9fd6e3fa17211593e37c1469",
                          "typeString": "literal_string \"total stakes is too high\""
                        },
                        "value": "total stakes is too high"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e3ddc8a760353c6cb4764665e8783f172d91728d9fd6e3fa17211593e37c1469",
                          "typeString": "literal_string \"total stakes is too high\""
                        }
                      ],
                      "id": 20012,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "30724:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 20018,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30724:96:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20019,
                  "nodeType": "ExpressionStatement",
                  "src": "30724:96:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 20022,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 20020,
                      "name": "_vote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19889,
                      "src": "30835:5:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 20021,
                      "name": "YES",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18099,
                      "src": "30844:3:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30835:12:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 20034,
                  "nodeType": "IfStatement",
                  "src": "30831:98:66",
                  "trueBody": {
                    "id": 20033,
                    "nodeType": "Block",
                    "src": "30849:80:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20023,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19947,
                              "src": "30863:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 20025,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount4Bounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17950,
                            "src": "30863:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 20029,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19969,
                                "src": "30911:6:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20026,
                                  "name": "staker",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19947,
                                  "src": "30886:6:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                  }
                                },
                                "id": 20027,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount4Bounty",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17950,
                                "src": "30886:20:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20028,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21287,
                              "src": "30886:24:66",
                              "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": 20030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30886:32:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30863:55:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20032,
                        "nodeType": "ExpressionStatement",
                        "src": "30863:55:66"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 20039,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 20035,
                        "name": "staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19947,
                        "src": "30938:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                        }
                      },
                      "id": 20037,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "vote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17946,
                      "src": "30938:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 20038,
                      "name": "_vote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19889,
                      "src": "30952:5:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30938:19:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 20040,
                  "nodeType": "ExpressionStatement",
                  "src": "30938:19:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 20053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 20041,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19924,
                          "src": "30968:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 20044,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17997,
                        "src": "30968:15:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 20045,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 20043,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19889,
                        "src": "30984:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "30968:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20048,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19924,
                              "src": "31004:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 20049,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17997,
                            "src": "31004:15:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 20051,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 20050,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19889,
                            "src": "31020:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "31004:22:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 20046,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19969,
                          "src": "30993:6:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20047,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "30993:10:66",
                        "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": 20052,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "30993:34:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30968:59:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 20054,
                  "nodeType": "ExpressionStatement",
                  "src": "30968:59:66"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 20056,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19887,
                        "src": "31048:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 20057,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18086,
                          "src": "31061:13:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 20060,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 20058,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19924,
                            "src": "31075:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 20059,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17953,
                          "src": "31075:23:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "31061:38:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 20061,
                        "name": "_staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19893,
                        "src": "31101:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 20062,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19889,
                        "src": "31110:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 20063,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19891,
                        "src": "31117:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 20055,
                      "name": "Stake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18014,
                      "src": "31042:5:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                      }
                    },
                    "id": 20064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31042:83:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20065,
                  "nodeType": "EmitStatement",
                  "src": "31037:88:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 20067,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19887,
                        "src": "31151:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 20066,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19885,
                      "src": "31142:8:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 20068,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31142:21:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19897,
                  "id": 20069,
                  "nodeType": "Return",
                  "src": "31135:28:66"
                }
              ]
            },
            "documentation": "@dev staking function\n@param _proposalId id of the proposal\n@param _vote  NO(2) or YES(1).\n@param _amount the betting amount\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 20071,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_stake",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19894,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19887,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 20071,
                  "src": "29427:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19886,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "29427:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19889,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 20071,
                  "src": "29448:13:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19888,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29448:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19891,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 20071,
                  "src": "29463:15:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19890,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29463:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19893,
                  "name": "_staker",
                  "nodeType": "VariableDeclaration",
                  "scope": 20071,
                  "src": "29480:15:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19892,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29480:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "29426:70:66"
            },
            "returnParameters": {
              "id": 19897,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19896,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 20071,
                  "src": "29514:4:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19895,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "29514:4:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "29513:6:66"
            },
            "scope": 20436,
            "src": "29411:1759:66",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 20365,
              "nodeType": "Block",
              "src": "32020:2776:66",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 20091,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20085,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20077,
                            "src": "32038:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 20086,
                            "name": "NUM_OF_CHOICES",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18093,
                            "src": "32047:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "32038:23:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20088,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20077,
                            "src": "32065:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 20089,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32073:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "32065:9:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "32038:36:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30203c205f766f7465203c3d2032",
                        "id": 20092,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32076:16:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6c167076fd1b36c01702a4c4b1e40be23cd6e9623d657cdb939ad9f0e6a548db",
                          "typeString": "literal_string \"0 < _vote <= 2\""
                        },
                        "value": "0 < _vote <= 2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6c167076fd1b36c01702a4c4b1e40be23cd6e9623d657cdb939ad9f0e6a548db",
                          "typeString": "literal_string \"0 < _vote <= 2\""
                        }
                      ],
                      "id": 20084,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "32030:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 20093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32030:63:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20094,
                  "nodeType": "ExpressionStatement",
                  "src": "32030:63:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 20096,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20073,
                        "src": "32116:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 20095,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19885,
                      "src": "32107:8:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 20097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32107:21:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 20101,
                  "nodeType": "IfStatement",
                  "src": "32103:63:66",
                  "trueBody": {
                    "id": 20100,
                    "nodeType": "Block",
                    "src": "32130:36:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 20098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "32151:4:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 20083,
                        "id": 20099,
                        "nodeType": "Return",
                        "src": "32144:11:66"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    20103
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 20103,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 20365,
                      "src": "32176:24:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 20102,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17937,
                        "src": "32176:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 20110,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 20104,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18074,
                      "src": "32203:10:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                      }
                    },
                    "id": 20109,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 20105,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18078,
                          "src": "32214:9:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                            "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                          }
                        },
                        "id": 20107,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 20106,
                          "name": "_proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20073,
                          "src": "32224:11:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "32214:22:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                        }
                      },
                      "id": 20108,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17965,
                      "src": "32214:33:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "32203:45:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32176:72:66"
                },
                {
                  "assignments": [
                    20112
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 20112,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 20365,
                      "src": "32258:25:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 20111,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "32258:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 20116,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 20113,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18078,
                      "src": "32286:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 20115,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 20114,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20073,
                      "src": "32296:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "32286:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32258:50:66"
                },
                {
                  "assignments": [
                    20118
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 20118,
                      "name": "reputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 20365,
                      "src": "32365:18:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 20117,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "32365:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 20127,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 20124,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20075,
                        "src": "32451:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 20125,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20073,
                        "src": "32459:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20120,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20112,
                              "src": "32418:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 20121,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "callbacks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17955,
                            "src": "32418:18:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 20119,
                          "name": "VotingMachineCallbacksInterface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20647,
                          "src": "32386:31:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$20647_$",
                            "typeString": "type(contract VotingMachineCallbacksInterface)"
                          }
                        },
                        "id": 20122,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32386:51:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$20647",
                          "typeString": "contract VotingMachineCallbacksInterface"
                        }
                      },
                      "id": 20123,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reputationOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 20637,
                      "src": "32386:64:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (address,bytes32) view external returns (uint256)"
                      }
                    },
                    "id": 20126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32386:85:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32365:106:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 20131,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 20129,
                          "name": "reputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20118,
                          "src": "32489:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 20130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "32502:1:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "32489:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5f766f746572206d75737420686176652072657075746174696f6e",
                        "id": 20132,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32505:29:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_904ad937a2b27da2b88c6196de3f24fd299b75859ba99719946b0bb0ef68cc41",
                          "typeString": "literal_string \"_voter must have reputation\""
                        },
                        "value": "_voter must have reputation"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_904ad937a2b27da2b88c6196de3f24fd299b75859ba99719946b0bb0ef68cc41",
                          "typeString": "literal_string \"_voter must have reputation\""
                        }
                      ],
                      "id": 20128,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "32481:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 20133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32481:54:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20134,
                  "nodeType": "ExpressionStatement",
                  "src": "32481:54:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 20138,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 20136,
                          "name": "reputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20118,
                          "src": "32553:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 20137,
                          "name": "_rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20079,
                          "src": "32567:4:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "32553:18:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "72657075746174696f6e203e3d205f726570",
                        "id": 20139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32573:20:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_854a896e4ac217d1bc6f5707e5523361ed247e9f3d2bb1c843a9e088d13a9e72",
                          "typeString": "literal_string \"reputation >= _rep\""
                        },
                        "value": "reputation >= _rep"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_854a896e4ac217d1bc6f5707e5523361ed247e9f3d2bb1c843a9e088d13a9e72",
                          "typeString": "literal_string \"reputation >= _rep\""
                        }
                      ],
                      "id": 20135,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "32545:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 20140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32545:49:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20141,
                  "nodeType": "ExpressionStatement",
                  "src": "32545:49:66"
                },
                {
                  "assignments": [
                    20143
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 20143,
                      "name": "rep",
                      "nodeType": "VariableDeclaration",
                      "scope": 20365,
                      "src": "32604:11:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 20142,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "32604:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 20145,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 20144,
                    "name": "_rep",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20079,
                    "src": "32618:4:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32604:18:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 20148,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 20146,
                      "name": "rep",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20143,
                      "src": "32636:3:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 20147,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "32643:1:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "32636:8:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 20154,
                  "nodeType": "IfStatement",
                  "src": "32632:55:66",
                  "trueBody": {
                    "id": 20153,
                    "nodeType": "Block",
                    "src": "32646:41:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 20149,
                            "name": "rep",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20143,
                            "src": "32660:3:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 20150,
                            "name": "reputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20118,
                            "src": "32666:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "32660:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20152,
                        "nodeType": "ExpressionStatement",
                        "src": "32660:16:66"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 20161,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 20155,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20112,
                            "src": "32758:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 20156,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "voters",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17993,
                          "src": "32758:15:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$17944_storage_$",
                            "typeString": "mapping(address => struct GenesisProtocolLogic.Voter storage ref)"
                          }
                        },
                        "id": 20158,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 20157,
                          "name": "_voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20075,
                          "src": "32774:6:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "32758:23:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$17944_storage",
                          "typeString": "struct GenesisProtocolLogic.Voter storage ref"
                        }
                      },
                      "id": 20159,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reputation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17941,
                      "src": "32758:34:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 20160,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "32796:1:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "32758:39:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 20165,
                  "nodeType": "IfStatement",
                  "src": "32754:82:66",
                  "trueBody": {
                    "id": 20164,
                    "nodeType": "Block",
                    "src": "32799:37:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 20162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "32820:5:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 20083,
                        "id": 20163,
                        "nodeType": "Return",
                        "src": "32813:12:66"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 20178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 20166,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20112,
                          "src": "32875:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 20169,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17985,
                        "src": "32875:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 20170,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 20168,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20077,
                        "src": "32890:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "32875:21:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20173,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20112,
                              "src": "32907:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 20174,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "votes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17985,
                            "src": "32907:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 20176,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 20175,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20077,
                            "src": "32922:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "32907:21:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 20171,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20143,
                          "src": "32899:3:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20172,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "32899:7:66",
                        "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": 20177,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "32899:30:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "32875:54:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 20179,
                  "nodeType": "ExpressionStatement",
                  "src": "32875:54:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 20208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20180,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20112,
                                "src": "33087:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 20181,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17985,
                              "src": "33087:14:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 20183,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 20182,
                              "name": "_vote",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20077,
                              "src": "33102:5:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "33087:21:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20184,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20112,
                                "src": "33111:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 20185,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17985,
                              "src": "33111:14:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 20188,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20186,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20112,
                                "src": "33126:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 20187,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17959,
                              "src": "33126:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "33111:36:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "33087:60:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 20190,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "33086:62:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 20206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20191,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20112,
                                      "src": "33166:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 20192,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "votes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17985,
                                    "src": "33166:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 20194,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 20193,
                                    "name": "NO",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18096,
                                    "src": "33181:2:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "33166:18:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20195,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20112,
                                      "src": "33188:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 20196,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "votes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17985,
                                    "src": "33188:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 20199,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20197,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20112,
                                      "src": "33203:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 20198,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "winningVote",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17959,
                                    "src": "33203:20:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "33188:36:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "33166:58:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 20201,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "33165:60:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 20205,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20202,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20112,
                                "src": "33241:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 20203,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17959,
                              "src": "33241:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 20204,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18099,
                              "src": "33265:3:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "33241:27:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "33165:103:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 20207,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "33164:105:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "33086:183:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 20274,
                  "nodeType": "IfStatement",
                  "src": "33082:937:66",
                  "trueBody": {
                    "id": 20273,
                    "nodeType": "Block",
                    "src": "33271:748:66",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 20235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 20229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              },
                              "id": 20213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20209,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20112,
                                  "src": "33289:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 20210,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "state",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17957,
                                "src": "33289:14:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20211,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17903,
                                  "src": "33307:13:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                    "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                  }
                                },
                                "id": 20212,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Boosted",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "33307:21:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "src": "33289:39:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20227,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 20219,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 20214,
                                          "name": "now",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22173,
                                          "src": "33408:3:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 20215,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 20112,
                                              "src": "33414:8:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 20216,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "times",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17979,
                                            "src": "33414:14:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                              "typeString": "uint256[3] storage ref"
                                            }
                                          },
                                          "id": 20218,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 20217,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "33429:1:66",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "33414:17:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "33408:23:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 20220,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "33407:25:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 20225,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 20221,
                                            "name": "params",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20103,
                                            "src": "33437:6:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                            }
                                          },
                                          "id": 20222,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "boostedVotePeriodLimit",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17916,
                                          "src": "33437:29:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 20223,
                                            "name": "params",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20103,
                                            "src": "33469:6:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                            }
                                          },
                                          "id": 20224,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "quietEndingPeriod",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17924,
                                          "src": "33469:24:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "33437:56:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 20226,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "33436:58:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "33407:87:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 20228,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "33406:89:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "33289:206:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            },
                            "id": 20234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20230,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20112,
                                "src": "33514:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 20231,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "state",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17957,
                              "src": "33514:14:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20232,
                                "name": "ProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17903,
                                "src": "33532:13:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                }
                              },
                              "id": 20233,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "QuietEndingPeriod",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "33532:31:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            },
                            "src": "33514:49:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "33289:274:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 20266,
                        "nodeType": "IfStatement",
                        "src": "33285:682:66",
                        "trueBody": {
                          "id": 20265,
                          "nodeType": "Block",
                          "src": "33565:402:66",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                },
                                "id": 20240,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20236,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20112,
                                    "src": "33623:8:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 20237,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "state",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17957,
                                  "src": "33623:14:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20238,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17903,
                                    "src": "33641:13:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                    }
                                  },
                                  "id": 20239,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "QuietEndingPeriod",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "33641:31:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "src": "33623:49:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 20256,
                              "nodeType": "IfStatement",
                              "src": "33619:231:66",
                              "trueBody": {
                                "id": 20255,
                                "nodeType": "Block",
                                "src": "33674:176:66",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20246,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 20241,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20112,
                                          "src": "33696:8:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 20243,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "currentBoostedVotePeriodLimit",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17963,
                                        "src": "33696:38:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 20244,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20103,
                                          "src": "33737:6:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                          }
                                        },
                                        "id": 20245,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "quietEndingPeriod",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17924,
                                        "src": "33737:24:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "33696:65:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 20247,
                                    "nodeType": "ExpressionStatement",
                                    "src": "33696:65:66"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20253,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 20248,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20112,
                                          "src": "33783:8:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 20250,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "state",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17957,
                                        "src": "33783:14:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$17903",
                                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 20251,
                                          "name": "ProposalState",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17903,
                                          "src": "33800:13:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                            "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                          }
                                        },
                                        "id": 20252,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "QuietEndingPeriod",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "33800:31:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$17903",
                                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                                        }
                                      },
                                      "src": "33783:48:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "id": 20254,
                                    "nodeType": "ExpressionStatement",
                                    "src": "33783:48:66"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 20263,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20257,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20112,
                                      "src": "33929:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 20260,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "times",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17979,
                                    "src": "33929:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                      "typeString": "uint256[3] storage ref"
                                    }
                                  },
                                  "id": 20261,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 20259,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "33944:1:66",
                                    "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": "33929:17:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 20262,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22173,
                                  "src": "33949:3:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "33929:23:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20264,
                              "nodeType": "ExpressionStatement",
                              "src": "33929:23:66"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20267,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20112,
                              "src": "33980:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 20269,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "winningVote",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17959,
                            "src": "33980:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 20270,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20077,
                            "src": "34003:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "33980:28:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20272,
                        "nodeType": "ExpressionStatement",
                        "src": "33980:28:66"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 20298,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 20275,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20112,
                          "src": "34028:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 20278,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17993,
                        "src": "34028:15:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$17944_storage_$",
                          "typeString": "mapping(address => struct GenesisProtocolLogic.Voter storage ref)"
                        }
                      },
                      "id": 20279,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 20277,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20075,
                        "src": "34044:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "34028:23:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$17944_storage",
                        "typeString": "struct GenesisProtocolLogic.Voter storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 20281,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20143,
                          "src": "34086:3:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 20282,
                          "name": "_vote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20077,
                          "src": "34109:5:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 20295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    },
                                    "id": 20287,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 20283,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20112,
                                        "src": "34141:8:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 20284,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "state",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17957,
                                      "src": "34141:14:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 20285,
                                        "name": "ProposalState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17903,
                                        "src": "34159:13:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                          "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                        }
                                      },
                                      "id": 20286,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "PreBoosted",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "34159:24:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "src": "34141:42:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 20288,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "34140:44:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    },
                                    "id": 20293,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 20289,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20112,
                                        "src": "34189:8:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 20290,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "state",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17957,
                                      "src": "34189:14:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 20291,
                                        "name": "ProposalState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17903,
                                        "src": "34207:13:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                          "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                        }
                                      },
                                      "id": 20292,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "Queued",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "34207:20:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "src": "34189:38:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 20294,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "34188:40:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "34140:88:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 20296,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "34139:90:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 20280,
                        "name": "Voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17944,
                        "src": "34054:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Voter_$17944_storage_ptr_$",
                          "typeString": "type(struct GenesisProtocolLogic.Voter storage pointer)"
                        }
                      },
                      "id": 20297,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "reputation",
                        "vote",
                        "preBoosted"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "34054:186:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$17944_memory",
                        "typeString": "struct GenesisProtocolLogic.Voter memory"
                      }
                    },
                    "src": "34028:212:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$17944_storage",
                      "typeString": "struct GenesisProtocolLogic.Voter storage ref"
                    }
                  },
                  "id": 20299,
                  "nodeType": "ExpressionStatement",
                  "src": "34028:212:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 20312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 20304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20300,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20112,
                              "src": "34255:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 20301,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "34255:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20302,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "34273:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 20303,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PreBoosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "34273:24:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "34255:42:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 20305,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "34254:44:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 20310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20306,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20112,
                              "src": "34303:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 20307,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "34303:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20308,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "34321:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 20309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Queued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "34321:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "34303:38:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 20311,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "34302:40:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "34254:88:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 20349,
                  "nodeType": "IfStatement",
                  "src": "34250:402:66",
                  "trueBody": {
                    "id": 20348,
                    "nodeType": "Block",
                    "src": "34344:308:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20313,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20112,
                                "src": "34358:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 20316,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "preBoostedVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17989,
                              "src": "34358:24:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 20317,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 20315,
                              "name": "_vote",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20077,
                              "src": "34383:5:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "34358:31:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20320,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20112,
                                    "src": "34400:8:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 20321,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "preBoostedVotes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17989,
                                  "src": "34400:24:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 20323,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 20322,
                                  "name": "_vote",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20077,
                                  "src": "34425:5:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "34400:31:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 20318,
                                "name": "rep",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20143,
                                "src": "34392:3:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21287,
                              "src": "34392:7:66",
                              "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": 20324,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "34392:40:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "34358:74:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20326,
                        "nodeType": "ExpressionStatement",
                        "src": "34358:74:66"
                      },
                      {
                        "assignments": [
                          20328
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20328,
                            "name": "reputationDeposit",
                            "nodeType": "VariableDeclaration",
                            "scope": 20348,
                            "src": "34446:25:66",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20327,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "34446:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20337,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 20332,
                                    "name": "rep",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20143,
                                    "src": "34512:3:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20329,
                                      "name": "params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20103,
                                      "src": "34475:6:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                      }
                                    },
                                    "id": 20330,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "votersReputationLossRatio",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17928,
                                    "src": "34475:32:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 20331,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 21215,
                                  "src": "34475:36:66",
                                  "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": 20333,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "34475:41:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20334,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "34474:43:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 20335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "34518:3:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "34474:47:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "34446:75:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20343,
                              "name": "reputationDeposit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20328,
                              "src": "34602:17:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20344,
                              "name": "_voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20075,
                              "src": "34621:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20345,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20073,
                              "src": "34629:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20339,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20112,
                                    "src": "34567:8:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 20340,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "callbacks",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17955,
                                  "src": "34567:18:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 20338,
                                "name": "VotingMachineCallbacksInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20647,
                                "src": "34535:31:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$20647_$",
                                  "typeString": "type(contract VotingMachineCallbacksInterface)"
                                }
                              },
                              "id": 20341,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "34535:51:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$20647",
                                "typeString": "contract VotingMachineCallbacksInterface"
                              }
                            },
                            "id": 20342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burnReputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20608,
                            "src": "34535:66:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (uint256,address,bytes32) external returns (bool)"
                            }
                          },
                          "id": 20346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34535:106:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20347,
                        "nodeType": "ExpressionStatement",
                        "src": "34535:106:66"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 20351,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20073,
                        "src": "34679:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 20352,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18086,
                          "src": "34692:13:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 20355,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 20353,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20112,
                            "src": "34706:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 20354,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17953,
                          "src": "34706:23:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "34692:38:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 20356,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20075,
                        "src": "34732:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 20357,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20077,
                        "src": "34740:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 20358,
                        "name": "rep",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20143,
                        "src": "34747:3:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 20350,
                      "name": "VoteProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20490,
                      "src": "34666:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                      }
                    },
                    "id": 20359,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34666:85:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20360,
                  "nodeType": "EmitStatement",
                  "src": "34661:90:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 20362,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20073,
                        "src": "34777:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 20361,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19885,
                      "src": "34768:8:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 20363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34768:21:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 20083,
                  "id": 20364,
                  "nodeType": "Return",
                  "src": "34761:28:66"
                }
              ]
            },
            "documentation": "@dev Vote for a proposal, if the voter already voted, cancel the last vote and set a new one instead\n@param _proposalId id of the proposal\n@param _voter used in case the vote is cast for someone else\n@param _vote a value between 0 to and the proposal's number of choices.\n@param _rep how many reputation the voter would like to stake for this vote.\n        if  _rep==0 so the voter full reputation will be use.\n@return true in case of proposal execution otherwise false\nthrows if proposal is not open or if it has been executed\nNB: executes the proposal if a decision has been reached",
            "id": 20366,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "internalVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 20080,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20073,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 20366,
                  "src": "31931:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 20072,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "31931:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20075,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 20366,
                  "src": "31952:14:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20074,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31952:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20077,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 20366,
                  "src": "31968:13:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20076,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31968:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20079,
                  "name": "_rep",
                  "nodeType": "VariableDeclaration",
                  "scope": 20366,
                  "src": "31983:12:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20078,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31983:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "31930:66:66"
            },
            "returnParameters": {
              "id": 20083,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20082,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 20366,
                  "src": "32014:4:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20081,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "32014:4:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "32013:6:66"
            },
            "scope": 20436,
            "src": "31909:2887:66",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 20394,
              "nodeType": "Block",
              "src": "35099:241:66",
              "statements": [
                {
                  "assignments": [
                    20374
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 20374,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 20394,
                      "src": "35109:25:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 20373,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "35109:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 20378,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 20375,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18078,
                      "src": "35137:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 20377,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 20376,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20368,
                      "src": "35147:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "35137:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "35109:50:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20387,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20374,
                                "src": "35312:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 20388,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17997,
                              "src": "35312:15:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 20390,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 20389,
                              "name": "NO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18096,
                              "src": "35328:2:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "35312:19:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 20386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "35304:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint216_$",
                            "typeString": "type(uint216)"
                          },
                          "typeName": "uint216"
                        },
                        "id": 20391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35304:28:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint216",
                          "typeString": "uint216"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint216",
                          "typeString": "uint216"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20380,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20374,
                                "src": "35273:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 20381,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17997,
                              "src": "35273:15:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 20383,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 20382,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18099,
                              "src": "35289:3:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "35273:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 20379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "35265:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint216_$",
                            "typeString": "type(uint216)"
                          },
                          "typeName": "uint216"
                        },
                        "id": 20384,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35265:29:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint216",
                          "typeString": "uint216"
                        }
                      },
                      "id": 20385,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "fraction",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16523,
                      "src": "35265:38:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint216_$_t_uint216_$returns$_t_uint256_$bound_to$_t_uint216_$",
                        "typeString": "function (uint216,uint216) pure returns (uint256)"
                      }
                    },
                    "id": 20392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35265:68:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 20372,
                  "id": 20393,
                  "nodeType": "Return",
                  "src": "35258:75:66"
                }
              ]
            },
            "documentation": "@dev _score return the proposal score (Confidence level)\nFor dual choice proposal S = (S+)/(S-)\n@param _proposalId the ID of the proposal\n@return uint256 proposal score as real number.",
            "id": 20395,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_score",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 20369,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20368,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 20395,
                  "src": "35047:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 20367,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "35047:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "35046:21:66"
            },
            "returnParameters": {
              "id": 20372,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20371,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 20395,
                  "src": "35090:7:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20370,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "35090:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "35089:9:66"
            },
            "scope": 20436,
            "src": "35031:309:66",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 20434,
              "nodeType": "Block",
              "src": "35572:297:66",
              "statements": [
                {
                  "assignments": [
                    20403
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 20403,
                      "name": "pState",
                      "nodeType": "VariableDeclaration",
                      "scope": 20434,
                      "src": "35582:20:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 20402,
                        "name": "ProposalState",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17903,
                        "src": "35582:13:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ProposalState_$17903",
                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 20408,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 20404,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18078,
                        "src": "35605:9:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                          "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                        }
                      },
                      "id": 20406,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 20405,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20397,
                        "src": "35615:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "35605:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                        "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                      }
                    },
                    "id": 20407,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "state",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17957,
                    "src": "35605:28:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "35582:51:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 20431,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 20425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 20419,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  },
                                  "id": 20412,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 20409,
                                    "name": "pState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20403,
                                    "src": "35652:6:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20410,
                                      "name": "ProposalState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17903,
                                      "src": "35662:13:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                        "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                      }
                                    },
                                    "id": 20411,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "PreBoosted",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "35662:24:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    }
                                  },
                                  "src": "35652:34:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 20413,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "35651:36:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  },
                                  "id": 20417,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 20414,
                                    "name": "pState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20403,
                                    "src": "35707:6:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20415,
                                      "name": "ProposalState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17903,
                                      "src": "35717:13:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                        "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                      }
                                    },
                                    "id": 20416,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Boosted",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "35717:21:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    }
                                  },
                                  "src": "35707:31:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 20418,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "35706:33:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "35651:88:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                },
                                "id": 20423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 20420,
                                  "name": "pState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20403,
                                  "src": "35759:6:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20421,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17903,
                                    "src": "35769:13:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                    }
                                  },
                                  "id": 20422,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "QuietEndingPeriod",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "35769:31:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "src": "35759:41:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 20424,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "35758:43:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "35651:150:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              },
                              "id": 20429,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20426,
                                "name": "pState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20403,
                                "src": "35821:6:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20427,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17903,
                                  "src": "35831:13:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                    "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                  }
                                },
                                "id": 20428,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Queued",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "35831:20:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "src": "35821:30:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 20430,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "35820:32:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "35651:201:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 20432,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "35650:212:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 20401,
                  "id": 20433,
                  "nodeType": "Return",
                  "src": "35643:219:66"
                }
              ]
            },
            "documentation": "@dev _isVotable check if the proposal is votable\n@param _proposalId the ID of the proposal\n@return bool true or false",
            "id": 20435,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_isVotable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 20398,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20397,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 20435,
                  "src": "35523:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 20396,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "35523:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "35522:21:66"
            },
            "returnParameters": {
              "id": 20401,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20400,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 20435,
                  "src": "35566:4:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20399,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "35566:4:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "35565:6:66"
            },
            "scope": 20436,
            "src": "35503:366:66",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 20437,
        "src": "531:35340:66"
      }
    ],
    "src": "0:35872:66"
  },
  "legacyAST": {
    "absolutePath": "@daostack/infra/contracts/votingMachines/GenesisProtocolLogic.sol",
    "exportedSymbols": {
      "GenesisProtocolLogic": [
        20436
      ]
    },
    "id": 20437,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 17869,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:66"
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/IntVoteInterface.sol",
        "file": "./IntVoteInterface.sol",
        "id": 17870,
        "nodeType": "ImportDirective",
        "scope": 20437,
        "sourceUnit": 20572,
        "src": "25:32:66",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/libs/RealMath.sol",
        "file": "../libs/RealMath.sol",
        "id": 17872,
        "nodeType": "ImportDirective",
        "scope": 20437,
        "sourceUnit": 16578,
        "src": "58:48:66",
        "symbolAliases": [
          {
            "foreign": 17871,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/VotingMachineCallbacksInterface.sol",
        "file": "./VotingMachineCallbacksInterface.sol",
        "id": 17873,
        "nodeType": "ImportDirective",
        "scope": 20437,
        "sourceUnit": 20648,
        "src": "107:47:66",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/ProposalExecuteInterface.sol",
        "file": "./ProposalExecuteInterface.sol",
        "id": 17874,
        "nodeType": "ImportDirective",
        "scope": 20437,
        "sourceUnit": 20584,
        "src": "155:40:66",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 17875,
        "nodeType": "ImportDirective",
        "scope": 20437,
        "sourceUnit": 21309,
        "src": "196:59:66",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/Math.sol",
        "file": "openzeppelin-solidity/contracts/math/Math.sol",
        "id": 17876,
        "nodeType": "ImportDirective",
        "scope": 20437,
        "sourceUnit": 21181,
        "src": "256:55:66",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "id": 17877,
        "nodeType": "ImportDirective",
        "scope": 20437,
        "sourceUnit": 22138,
        "src": "312:64:66",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/utils/Address.sol",
        "file": "openzeppelin-solidity/contracts/utils/Address.sol",
        "id": 17878,
        "nodeType": "ImportDirective",
        "scope": 20437,
        "sourceUnit": 22157,
        "src": "377:59:66",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 17879,
              "name": "IntVoteInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 20571,
              "src": "564:16:66",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IntVoteInterface_$20571",
                "typeString": "contract IntVoteInterface"
              }
            },
            "id": 17880,
            "nodeType": "InheritanceSpecifier",
            "src": "564:16:66"
          }
        ],
        "contractDependencies": [
          20571
        ],
        "contractKind": "contract",
        "documentation": "@title GenesisProtocol implementation -an organization's voting machine scheme.",
        "fullyImplemented": false,
        "id": 20436,
        "linearizedBaseContracts": [
          20436,
          20571
        ],
        "name": "GenesisProtocolLogic",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 17883,
            "libraryName": {
              "contractScope": null,
              "id": 17881,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21308,
              "src": "593:8:66",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$21308",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "587:27:66",
            "typeName": {
              "id": 17882,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "606:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 17886,
            "libraryName": {
              "contractScope": null,
              "id": 17884,
              "name": "Math",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21180,
              "src": "625:4:66",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Math_$21180",
                "typeString": "library Math"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "619:23:66",
            "typeName": {
              "id": 17885,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "634:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 17889,
            "libraryName": {
              "contractScope": null,
              "id": 17887,
              "name": "RealMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 16577,
              "src": "653:8:66",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RealMath_$16577",
                "typeString": "library RealMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "647:27:66",
            "typeName": {
              "id": 17888,
              "name": "uint216",
              "nodeType": "ElementaryTypeName",
              "src": "666:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint216",
                "typeString": "uint216"
              }
            }
          },
          {
            "id": 17892,
            "libraryName": {
              "contractScope": null,
              "id": 17890,
              "name": "RealMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 16577,
              "src": "685:8:66",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RealMath_$16577",
                "typeString": "library RealMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "679:27:66",
            "typeName": {
              "id": 17891,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "698:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 17895,
            "libraryName": {
              "contractScope": null,
              "id": 17893,
              "name": "Address",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22156,
              "src": "717:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Address_$22156",
                "typeString": "library Address"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "711:26:66",
            "typeName": {
              "id": 17894,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "729:7:66",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            }
          },
          {
            "canonicalName": "GenesisProtocolLogic.ProposalState",
            "id": 17903,
            "members": [
              {
                "id": 17896,
                "name": "None",
                "nodeType": "EnumValue",
                "src": "764:4:66"
              },
              {
                "id": 17897,
                "name": "ExpiredInQueue",
                "nodeType": "EnumValue",
                "src": "770:14:66"
              },
              {
                "id": 17898,
                "name": "Executed",
                "nodeType": "EnumValue",
                "src": "786:8:66"
              },
              {
                "id": 17899,
                "name": "Queued",
                "nodeType": "EnumValue",
                "src": "796:6:66"
              },
              {
                "id": 17900,
                "name": "PreBoosted",
                "nodeType": "EnumValue",
                "src": "804:10:66"
              },
              {
                "id": 17901,
                "name": "Boosted",
                "nodeType": "EnumValue",
                "src": "816:7:66"
              },
              {
                "id": 17902,
                "name": "QuietEndingPeriod",
                "nodeType": "EnumValue",
                "src": "825:17:66"
              }
            ],
            "name": "ProposalState",
            "nodeType": "EnumDefinition",
            "src": "743:100:66"
          },
          {
            "canonicalName": "GenesisProtocolLogic.ExecutionState",
            "id": 17910,
            "members": [
              {
                "id": 17904,
                "name": "None",
                "nodeType": "EnumValue",
                "src": "870:4:66"
              },
              {
                "id": 17905,
                "name": "QueueBarCrossed",
                "nodeType": "EnumValue",
                "src": "876:15:66"
              },
              {
                "id": 17906,
                "name": "QueueTimeOut",
                "nodeType": "EnumValue",
                "src": "893:12:66"
              },
              {
                "id": 17907,
                "name": "PreBoostedBarCrossed",
                "nodeType": "EnumValue",
                "src": "907:20:66"
              },
              {
                "id": 17908,
                "name": "BoostedTimeOut",
                "nodeType": "EnumValue",
                "src": "929:14:66"
              },
              {
                "id": 17909,
                "name": "BoostedBarCrossed",
                "nodeType": "EnumValue",
                "src": "945:17:66"
              }
            ],
            "name": "ExecutionState",
            "nodeType": "EnumDefinition",
            "src": "848:115:66"
          },
          {
            "canonicalName": "GenesisProtocolLogic.Parameters",
            "id": 17937,
            "members": [
              {
                "constant": false,
                "id": 17912,
                "name": "queuedVoteRequiredPercentage",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1029:36:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17911,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1029:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17914,
                "name": "queuedVotePeriodLimit",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1113:29:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17913,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1113:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17916,
                "name": "boostedVotePeriodLimit",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1218:30:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17915,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1218:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17918,
                "name": "preBoostedVotePeriodLimit",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1311:33:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17917,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1311:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17920,
                "name": "thresholdConst",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1485:22:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17919,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1485:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17922,
                "name": "limitExponentValue",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1647:26:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17921,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1647:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17924,
                "name": "quietEndingPeriod",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1815:25:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17923,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1815:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17926,
                "name": "proposingRepReward",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1872:26:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17925,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1872:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17928,
                "name": "votersReputationLossRatio",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "1937:33:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17927,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1937:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17930,
                "name": "minimumDaoBounty",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "2110:24:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17929,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2110:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17932,
                "name": "daoBountyConst",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "2144:22:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17931,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2144:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17934,
                "name": "activationTime",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "2332:22:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17933,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2332:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17936,
                "name": "voteOnBehalf",
                "nodeType": "VariableDeclaration",
                "scope": 17937,
                "src": "2521:20:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 17935,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2521:7:66",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Parameters",
            "nodeType": "StructDefinition",
            "scope": 20436,
            "src": "1001:1547:66",
            "visibility": "public"
          },
          {
            "canonicalName": "GenesisProtocolLogic.Voter",
            "id": 17944,
            "members": [
              {
                "constant": false,
                "id": 17939,
                "name": "vote",
                "nodeType": "VariableDeclaration",
                "scope": 17944,
                "src": "2577:12:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17938,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2577:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17941,
                "name": "reputation",
                "nodeType": "VariableDeclaration",
                "scope": 17944,
                "src": "2616:18:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17940,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2616:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17943,
                "name": "preBoosted",
                "nodeType": "VariableDeclaration",
                "scope": 17944,
                "src": "2676:15:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 17942,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "2676:4:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Voter",
            "nodeType": "StructDefinition",
            "scope": 20436,
            "src": "2554:144:66",
            "visibility": "public"
          },
          {
            "canonicalName": "GenesisProtocolLogic.Staker",
            "id": 17951,
            "members": [
              {
                "constant": false,
                "id": 17946,
                "name": "vote",
                "nodeType": "VariableDeclaration",
                "scope": 17951,
                "src": "2728:12:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17945,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2728:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17948,
                "name": "amount",
                "nodeType": "VariableDeclaration",
                "scope": 17951,
                "src": "2767:14:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17947,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2767:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17950,
                "name": "amount4Bounty",
                "nodeType": "VariableDeclaration",
                "scope": 17951,
                "src": "2819:21:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17949,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2819:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Staker",
            "nodeType": "StructDefinition",
            "scope": 20436,
            "src": "2704:206:66",
            "visibility": "public"
          },
          {
            "canonicalName": "GenesisProtocolLogic.Proposal",
            "id": 18002,
            "members": [
              {
                "constant": false,
                "id": 17953,
                "name": "organizationId",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "2942:22:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 17952,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "2942:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17955,
                "name": "callbacks",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3039:17:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 17954,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "3039:7:66",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17957,
                "name": "state",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3115:19:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 17956,
                  "name": "ProposalState",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 17903,
                  "src": "3115:13:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17959,
                "name": "winningVote",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3144:19:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17958,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3144:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17961,
                "name": "proposer",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3193:16:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 17960,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "3193:7:66",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17963,
                "name": "currentBoostedVotePeriodLimit",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3313:37:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17962,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3313:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17965,
                "name": "paramsHash",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3360:18:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 17964,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "3360:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17967,
                "name": "daoBountyRemain",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3388:23:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17966,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3388:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17969,
                "name": "daoBounty",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3496:17:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17968,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3496:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17971,
                "name": "totalStakes",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3523:19:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17970,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3523:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17973,
                "name": "confidenceThreshold",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3620:27:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17972,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3620:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17975,
                "name": "expirationCallBountyPercentage",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3747:38:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17974,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3747:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17979,
                "name": "times",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3795:13:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                  "typeString": "uint256[3]"
                },
                "typeName": {
                  "baseType": {
                    "id": 17976,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3795:4:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17978,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 17977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3800:1:66",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3_by_1",
                      "typeString": "int_const 3"
                    },
                    "value": "3"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "3795:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                    "typeString": "uint256[3]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17981,
                "name": "daoRedeemItsWinnings",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "3954:25:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 17980,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "3954:4:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17985,
                "name": "votes",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "4026:40:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 17984,
                  "keyType": {
                    "id": 17982,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4034:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4026:34:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 17983,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4048:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17989,
                "name": "preBoostedVotes",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "4113:50:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 17988,
                  "keyType": {
                    "id": 17986,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4121:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4113:34:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 17987,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4135:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17993,
                "name": "voters",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "4207:37:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$17944_storage_$",
                  "typeString": "mapping(address => struct GenesisProtocolLogic.Voter)"
                },
                "typeName": {
                  "id": 17992,
                  "keyType": {
                    "id": 17990,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4215:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4207:30:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$17944_storage_$",
                    "typeString": "mapping(address => struct GenesisProtocolLogic.Voter)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 17991,
                    "name": "Voter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17944,
                    "src": "4227:5:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                      "typeString": "struct GenesisProtocolLogic.Voter"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17997,
                "name": "stakes",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "4289:41:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 17996,
                  "keyType": {
                    "id": 17994,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4297:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4289:34:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 17995,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4311:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 18001,
                "name": "stakers",
                "nodeType": "VariableDeclaration",
                "scope": 18002,
                "src": "4372:38:66",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$17951_storage_$",
                  "typeString": "mapping(address => struct GenesisProtocolLogic.Staker)"
                },
                "typeName": {
                  "id": 18000,
                  "keyType": {
                    "id": 17998,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4380:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4372:30:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$17951_storage_$",
                    "typeString": "mapping(address => struct GenesisProtocolLogic.Staker)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 17999,
                    "name": "Staker",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17951,
                    "src": "4392:6:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                      "typeString": "struct GenesisProtocolLogic.Staker"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Proposal",
            "nodeType": "StructDefinition",
            "scope": 20436,
            "src": "2916:1501:66",
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18014,
            "name": "Stake",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18013,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18004,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18014,
                  "src": "4435:27:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18003,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4435:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18006,
                  "indexed": true,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 18014,
                  "src": "4472:29:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18005,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4472:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18008,
                  "indexed": true,
                  "name": "_staker",
                  "nodeType": "VariableDeclaration",
                  "scope": 18014,
                  "src": "4511:23:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18007,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4511:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18010,
                  "indexed": false,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 18014,
                  "src": "4544:13:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18009,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4544:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18012,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 18014,
                  "src": "4567:15:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18011,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4567:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4434:154:66"
            },
            "src": "4423:166:66"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18024,
            "name": "Redeem",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18023,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18016,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18024,
                  "src": "4608:27:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18015,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4608:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18018,
                  "indexed": true,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 18024,
                  "src": "4645:29:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18017,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4645:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18020,
                  "indexed": true,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 18024,
                  "src": "4684:28:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18019,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4684:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18022,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 18024,
                  "src": "4722:15:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18021,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4722:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4607:136:66"
            },
            "src": "4595:149:66"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18034,
            "name": "RedeemDaoBounty",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18033,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18026,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18034,
                  "src": "4772:27:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18025,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4772:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18028,
                  "indexed": true,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 18034,
                  "src": "4809:29:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18027,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4809:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18030,
                  "indexed": true,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 18034,
                  "src": "4848:28:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18029,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4848:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18032,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 18034,
                  "src": "4886:15:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18031,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4886:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4771:136:66"
            },
            "src": "4750:158:66"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18044,
            "name": "RedeemReputation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18043,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18036,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18044,
                  "src": "4937:27:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18035,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4937:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18038,
                  "indexed": true,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 18044,
                  "src": "4974:29:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18037,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4974:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18040,
                  "indexed": true,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 18044,
                  "src": "5013:28:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18039,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5013:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18042,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 18044,
                  "src": "5051:15:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18041,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5051:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4936:136:66"
            },
            "src": "4914:159:66"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18050,
            "name": "StateChange",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18049,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18046,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18050,
                  "src": "5097:27:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18045,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5097:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18048,
                  "indexed": false,
                  "name": "_proposalState",
                  "nodeType": "VariableDeclaration",
                  "scope": 18050,
                  "src": "5126:28:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 18047,
                    "name": "ProposalState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17903,
                    "src": "5126:13:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5096:59:66"
            },
            "src": "5079:77:66"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18056,
            "name": "GPExecuteProposal",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18055,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18052,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18056,
                  "src": "5185:27:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18051,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5185:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18054,
                  "indexed": false,
                  "name": "_executionState",
                  "nodeType": "VariableDeclaration",
                  "scope": 18056,
                  "src": "5214:30:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 18053,
                    "name": "ExecutionState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17910,
                    "src": "5214:14:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ExecutionState_$17910",
                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5184:61:66"
            },
            "src": "5161:85:66"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18064,
            "name": "ExpirationCallBounty",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18063,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18058,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18064,
                  "src": "5278:27:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18057,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5278:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18060,
                  "indexed": true,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 18064,
                  "src": "5307:28:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18059,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5307:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18062,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 18064,
                  "src": "5337:15:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18061,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5337:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5277:76:66"
            },
            "src": "5251:103:66"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 18070,
            "name": "ConfidenceLevelChange",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 18069,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18066,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18070,
                  "src": "5387:27:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18065,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5387:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18068,
                  "indexed": false,
                  "name": "_confidenceThreshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 18070,
                  "src": "5416:28:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18067,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5416:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5386:59:66"
            },
            "src": "5359:87:66"
          },
          {
            "constant": false,
            "id": 18074,
            "name": "parameters",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "5452:46:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
              "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters)"
            },
            "typeName": {
              "id": 18073,
              "keyType": {
                "id": 18071,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5460:7:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5452:28:66",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters)"
              },
              "valueType": {
                "contractScope": null,
                "id": 18072,
                "name": "Parameters",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 17937,
                "src": "5469:10:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                  "typeString": "struct GenesisProtocolLogic.Parameters"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18078,
            "name": "proposals",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "5544:43:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
              "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal)"
            },
            "typeName": {
              "id": 18077,
              "keyType": {
                "id": 18075,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5552:7:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5544:26:66",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal)"
              },
              "valueType": {
                "contractScope": null,
                "id": 18076,
                "name": "Proposal",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 18002,
                "src": "5561:8:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                  "typeString": "struct GenesisProtocolLogic.Proposal"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18082,
            "name": "orgBoostedProposalsCnt",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "5656:52:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 18081,
              "keyType": {
                "id": 18079,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5664:7:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5656:22:66",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 18080,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5673:4:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18086,
            "name": "organizations",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "5758:60:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 18085,
              "keyType": {
                "id": 18083,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5766:7:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5758:39:66",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 18084,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "5784:7:66",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18090,
            "name": "averagesDownstakesOfBoosted",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "5877:86:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 18089,
              "keyType": {
                "id": 18087,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5885:7:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5877:51:66",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 18088,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5906:7:66",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 18093,
            "name": "NUM_OF_CHOICES",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "5969:42:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 18091,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "5969:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32",
              "id": 18092,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6010:1:66",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 18096,
            "name": "NO",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "6017:30:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 18094,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "6017:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32",
              "id": 18095,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6046:1:66",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 18099,
            "name": "YES",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "6053:31:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 18097,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "6053:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 18098,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6083:1:66",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18101,
            "name": "proposalsCnt",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "6090:27:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 18100,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "6090:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18103,
            "name": "stakingToken",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "6152:26:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IERC20_$22137",
              "typeString": "contract IERC20"
            },
            "typeName": {
              "contractScope": null,
              "id": 18102,
              "name": "IERC20",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22137,
              "src": "6152:6:66",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20_$22137",
                "typeString": "contract IERC20"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 18106,
            "name": "GEN_TOKEN_ADDRESS",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "6184:87:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 18104,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "6184:7:66",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307835343346663232374636344161313765413133324266393838366341623544423535444341646466",
              "id": 18105,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6229:42:66",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_address_payable",
                "typeString": "address payable"
              },
              "value": "0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 18109,
            "name": "MAX_BOOSTED_PROPOSALS",
            "nodeType": "VariableDeclaration",
            "scope": 20436,
            "src": "6277:53:66",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 18107,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "6277:7:66",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34303936",
              "id": 18108,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6326:4:66",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4096_by_1",
                "typeString": "int_const 4096"
              },
              "value": "4096"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 18132,
              "nodeType": "Block",
              "src": "6418:556:66",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18115,
                            "name": "GEN_TOKEN_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18106,
                            "src": "6811:17:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 18114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6803:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 18116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6803:26:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 18117,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22155,
                      "src": "6803:37:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 18118,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6803:39:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 18130,
                    "nodeType": "Block",
                    "src": "6915:53:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18128,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18126,
                            "name": "stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18103,
                            "src": "6929:12:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$22137",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18127,
                            "name": "_stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18111,
                            "src": "6944:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$22137",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "6929:28:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$22137",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 18129,
                        "nodeType": "ExpressionStatement",
                        "src": "6929:28:66"
                      }
                    ]
                  },
                  "id": 18131,
                  "nodeType": "IfStatement",
                  "src": "6799:169:66",
                  "trueBody": {
                    "id": 18125,
                    "nodeType": "Block",
                    "src": "6844:65:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18119,
                            "name": "stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18103,
                            "src": "6858:12:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$22137",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 18121,
                                "name": "GEN_TOKEN_ADDRESS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18106,
                                "src": "6880:17:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 18120,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22137,
                              "src": "6873:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$22137_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 18122,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6873:25:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$22137",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "6858:40:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$22137",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 18124,
                        "nodeType": "ExpressionStatement",
                        "src": "6858:40:66"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Constructor",
            "id": 18133,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18112,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18111,
                  "name": "_stakingToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 18133,
                  "src": "6389:20:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$22137",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 18110,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22137,
                    "src": "6389:6:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$22137",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6388:22:66"
            },
            "returnParameters": {
              "id": 18113,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6418:0:66"
            },
            "scope": 20436,
            "src": "6377:597:66",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18144,
              "nodeType": "Block",
              "src": "7196:60:66",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18139,
                            "name": "_proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18135,
                            "src": "7225:11:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 18138,
                          "name": "_isVotable",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20435,
                          "src": "7214:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 18140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7214:23:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 18137,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "7206:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 18141,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7206:32:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18142,
                  "nodeType": "ExpressionStatement",
                  "src": "7206:32:66"
                },
                {
                  "id": 18143,
                  "nodeType": "PlaceholderStatement",
                  "src": "7248:1:66"
                }
              ]
            },
            "documentation": "@dev Check that the proposal is votable\na proposal is votable if it is in one of the following states:\n PreBoosted,Boosted,QuietEndingPeriod or Queued",
            "id": 18145,
            "name": "votable",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 18136,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18135,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18145,
                  "src": "7175:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18134,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7175:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7174:21:66"
            },
            "src": "7158:98:66",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18368,
              "nodeType": "Block",
              "src": "7700:2008:66",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18159,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22173,
                          "src": "7770:3:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18160,
                              "name": "parameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18074,
                              "src": "7776:10:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                                "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                              }
                            },
                            "id": 18162,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 18161,
                              "name": "_paramsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18149,
                              "src": "7787:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7776:23:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                              "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                            }
                          },
                          "id": 18163,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "activationTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17934,
                          "src": "7776:38:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7770:44:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f742061637469766520796574",
                        "id": 18165,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7816:16:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f30c2c4eef761b63d78da11427f8e9c88d014c48e08e70db1400926a3cd70480",
                          "typeString": "literal_string \"not active yet\""
                        },
                        "value": "not active yet"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f30c2c4eef761b63d78da11427f8e9c88d014c48e08e70db1400926a3cd70480",
                          "typeString": "literal_string \"not active yet\""
                        }
                      ],
                      "id": 18158,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "7762:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7762:71:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18167,
                  "nodeType": "ExpressionStatement",
                  "src": "7762:71:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18169,
                              "name": "parameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18074,
                              "src": "7889:10:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                                "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                              }
                            },
                            "id": 18171,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 18170,
                              "name": "_paramsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18149,
                              "src": "7900:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7889:23:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                              "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                            }
                          },
                          "id": 18172,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "queuedVoteRequiredPercentage",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17912,
                          "src": "7889:52:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3530",
                          "id": 18173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7945:2:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_50_by_1",
                            "typeString": "int_const 50"
                          },
                          "value": "50"
                        },
                        "src": "7889:58:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 18168,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "7881:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 18175,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7881:67:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18176,
                  "nodeType": "ExpressionStatement",
                  "src": "7881:67:66"
                },
                {
                  "assignments": [
                    18178
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18178,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 18368,
                      "src": "7991:18:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 18177,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7991:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18186,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18182,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22229,
                            "src": "8039:4:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GenesisProtocolLogic_$20436",
                              "typeString": "contract GenesisProtocolLogic"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18183,
                            "name": "proposalsCnt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18101,
                            "src": "8045:12:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_GenesisProtocolLogic_$20436",
                              "typeString": "contract GenesisProtocolLogic"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 18180,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22158,
                            "src": "8022:3:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8022:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 18184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8022:36:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18179,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22165,
                      "src": "8012:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 18185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8012:47:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7991:68:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 18187,
                      "name": "proposalsCnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18101,
                      "src": "8069:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 18190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8101:1:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 18188,
                          "name": "proposalsCnt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18101,
                          "src": "8084:12:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18189,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "8084:16:66",
                        "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": 18191,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8084:19:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8069:34:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18193,
                  "nodeType": "ExpressionStatement",
                  "src": "8069:34:66"
                },
                {
                  "assignments": [
                    18195
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18195,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 18368,
                      "src": "8140:24:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 18194,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "8140:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18196,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8140:24:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18197,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "8174:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18199,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "callbacks",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17955,
                      "src": "8174:18:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18200,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22171,
                        "src": "8195:3:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 18201,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8195:10:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "8174:31:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 18203,
                  "nodeType": "ExpressionStatement",
                  "src": "8174:31:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18215,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18204,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "8215:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18206,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "organizationId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17953,
                      "src": "8215:23:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18210,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22171,
                                "src": "8268:3:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 18211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8268:10:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18212,
                              "name": "_organization",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18153,
                              "src": "8280:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18208,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22158,
                              "src": "8251:3:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 18209,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8251:16:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 18213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8251:43:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 18207,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22165,
                        "src": "8241:9:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 18214,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8241:54:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "8215:80:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 18216,
                  "nodeType": "ExpressionStatement",
                  "src": "8215:80:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18222,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18217,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "8306:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18219,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17957,
                      "src": "8306:14:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18220,
                        "name": "ProposalState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17903,
                        "src": "8323:13:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                          "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                        }
                      },
                      "id": 18221,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Queued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8323:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      }
                    },
                    "src": "8306:37:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                    }
                  },
                  "id": 18223,
                  "nodeType": "ExpressionStatement",
                  "src": "8306:37:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18224,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18195,
                          "src": "8407:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal memory"
                          }
                        },
                        "id": 18227,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "times",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17979,
                        "src": "8407:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory",
                          "typeString": "uint256[3] memory"
                        }
                      },
                      "id": 18228,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 18226,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8422:1:66",
                        "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": "8407:17:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18229,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22173,
                      "src": "8427:3:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8407:23:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18231,
                  "nodeType": "ExpressionStatement",
                  "src": "8407:23:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18239,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18232,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "8456:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18234,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentBoostedVotePeriodLimit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17963,
                      "src": "8456:38:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 18235,
                          "name": "parameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18074,
                          "src": "8497:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                            "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                          }
                        },
                        "id": 18237,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 18236,
                          "name": "_paramsHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18149,
                          "src": "8508:11:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8497:23:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                          "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                        }
                      },
                      "id": 18238,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "boostedVotePeriodLimit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17916,
                      "src": "8497:46:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8456:87:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18240,
                  "nodeType": "ExpressionStatement",
                  "src": "8456:87:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18241,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "8553:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18243,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "proposer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17961,
                      "src": "8553:17:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18244,
                      "name": "_proposer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18151,
                      "src": "8573:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "8553:29:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 18246,
                  "nodeType": "ExpressionStatement",
                  "src": "8553:29:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18247,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "8592:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18249,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "winningVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17959,
                      "src": "8592:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18250,
                      "name": "NO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18096,
                      "src": "8615:2:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8592:25:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18252,
                  "nodeType": "ExpressionStatement",
                  "src": "8592:25:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18253,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "8627:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18255,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17965,
                      "src": "8627:19:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18256,
                      "name": "_paramsHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18149,
                      "src": "8649:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "8627:33:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 18258,
                  "nodeType": "ExpressionStatement",
                  "src": "8627:33:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 18266,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 18259,
                        "name": "organizations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18086,
                        "src": "8674:13:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 18262,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18260,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18195,
                          "src": "8688:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal memory"
                          }
                        },
                        "id": 18261,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "organizationId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17953,
                        "src": "8688:23:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8674:38:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 18264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8724:1:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 18263,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8716:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 18265,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8716:10:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "8674:52:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 18291,
                  "nodeType": "IfStatement",
                  "src": "8670:292:66",
                  "trueBody": {
                    "id": 18290,
                    "nodeType": "Block",
                    "src": "8728:234:66",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 18271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 18267,
                            "name": "_organization",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18153,
                            "src": "8746:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 18269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8771:1:66",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 18268,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8763:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 18270,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8763:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "8746:27:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 18288,
                          "nodeType": "Block",
                          "src": "8865:87:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18286,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18281,
                                    "name": "organizations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18086,
                                    "src": "8883:13:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 18284,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18282,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18195,
                                      "src": "8897:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                      }
                                    },
                                    "id": 18283,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17953,
                                    "src": "8897:23:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8883:38:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 18285,
                                  "name": "_organization",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18153,
                                  "src": "8924:13:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8883:54:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 18287,
                              "nodeType": "ExpressionStatement",
                              "src": "8883:54:66"
                            }
                          ]
                        },
                        "id": 18289,
                        "nodeType": "IfStatement",
                        "src": "8742:210:66",
                        "trueBody": {
                          "id": 18280,
                          "nodeType": "Block",
                          "src": "8775:84:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18272,
                                    "name": "organizations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18086,
                                    "src": "8793:13:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 18275,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18273,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18195,
                                      "src": "8807:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                      }
                                    },
                                    "id": 18274,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17953,
                                    "src": "8807:23:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8793:38:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18276,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22171,
                                    "src": "8834:3:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 18277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8834:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "8793:51:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 18279,
                              "nodeType": "ExpressionStatement",
                              "src": "8793:51:66"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    18293
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18293,
                      "name": "daoBounty",
                      "nodeType": "VariableDeclaration",
                      "scope": 18368,
                      "src": "8997:17:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18292,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8997:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18307,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "313030",
                        "id": 18305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9126:3:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        },
                        "value": "100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18299,
                              "name": "averagesDownstakesOfBoosted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18090,
                              "src": "9068:27:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 18302,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18300,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18195,
                                "src": "9096:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                }
                              },
                              "id": 18301,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "organizationId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17953,
                              "src": "9096:23:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9068:52:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 18294,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18074,
                                "src": "9025:10:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                                  "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                                }
                              },
                              "id": 18296,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 18295,
                                "name": "_paramsHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18149,
                                "src": "9036:11:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9025:23:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                                "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                              }
                            },
                            "id": 18297,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "daoBountyConst",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17932,
                            "src": "9025:38:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 21215,
                          "src": "9025:42:66",
                          "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": 18303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9025:96:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 18304,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21239,
                      "src": "9025:100:66",
                      "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": 18306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9025:105:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8997:133:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18313,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 18308,
                      "name": "daoBounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18293,
                      "src": "9144:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 18309,
                          "name": "parameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18074,
                          "src": "9156:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                            "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                          }
                        },
                        "id": 18311,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 18310,
                          "name": "_paramsHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18149,
                          "src": "9167:11:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9156:23:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                          "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                        }
                      },
                      "id": 18312,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "minimumDaoBounty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17930,
                      "src": "9156:40:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9144:52:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 18330,
                    "nodeType": "Block",
                    "src": "9296:61:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18324,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18195,
                              "src": "9310:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal memory"
                              }
                            },
                            "id": 18326,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoBountyRemain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17967,
                            "src": "9310:24:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18327,
                            "name": "daoBounty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18293,
                            "src": "9337:9:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9310:36:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18329,
                        "nodeType": "ExpressionStatement",
                        "src": "9310:36:66"
                      }
                    ]
                  },
                  "id": 18331,
                  "nodeType": "IfStatement",
                  "src": "9140:217:66",
                  "trueBody": {
                    "id": 18323,
                    "nodeType": "Block",
                    "src": "9198:92:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18314,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18195,
                              "src": "9212:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal memory"
                              }
                            },
                            "id": 18316,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoBountyRemain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17967,
                            "src": "9212:24:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 18317,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18074,
                                "src": "9239:10:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                                  "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                                }
                              },
                              "id": 18319,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 18318,
                                "name": "_paramsHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18149,
                                "src": "9250:11:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9239:23:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                                "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                              }
                            },
                            "id": 18320,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "minimumDaoBounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17930,
                            "src": "9239:40:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9212:67:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18322,
                        "nodeType": "ExpressionStatement",
                        "src": "9212:67:66"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18337,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18332,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "9366:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18334,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalStakes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17971,
                      "src": "9366:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18335,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "9389:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18336,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "daoBountyRemain",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17967,
                      "src": "9389:24:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9366:47:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18338,
                  "nodeType": "ExpressionStatement",
                  "src": "9366:47:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18343,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 18339,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18078,
                        "src": "9423:9:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                          "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                        }
                      },
                      "id": 18341,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 18340,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18178,
                        "src": "9433:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9423:21:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                        "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18342,
                      "name": "proposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18195,
                      "src": "9447:8:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal memory"
                      }
                    },
                    "src": "9423:32:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "id": 18344,
                  "nodeType": "ExpressionStatement",
                  "src": "9423:32:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18353,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18345,
                            "name": "proposals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18078,
                            "src": "9465:9:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                              "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                            }
                          },
                          "id": 18347,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 18346,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18178,
                            "src": "9475:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9465:21:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                          }
                        },
                        "id": 18348,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17997,
                        "src": "9465:28:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 18350,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 18349,
                        "name": "NO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18096,
                        "src": "9494:2:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9465:32:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18351,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18195,
                        "src": "9500:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 18352,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "daoBountyRemain",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17967,
                      "src": "9500:24:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9465:59:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18354,
                  "nodeType": "ExpressionStatement",
                  "src": "9465:59:66"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18356,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18178,
                        "src": "9583:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 18357,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18086,
                          "src": "9595:13:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 18360,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18358,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18195,
                            "src": "9609:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal memory"
                            }
                          },
                          "id": 18359,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17953,
                          "src": "9609:23:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9595:38:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18361,
                        "name": "NUM_OF_CHOICES",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18093,
                        "src": "9635:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18362,
                        "name": "_proposer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18151,
                        "src": "9651:9:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18363,
                        "name": "_paramsHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18149,
                        "src": "9662:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 18355,
                      "name": "NewProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20468,
                      "src": "9571:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,address,uint256,address,bytes32)"
                      }
                    },
                    "id": 18364,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9571:103:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18365,
                  "nodeType": "EmitStatement",
                  "src": "9566:108:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18366,
                    "name": "proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18178,
                    "src": "9691:10:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 18157,
                  "id": 18367,
                  "nodeType": "Return",
                  "src": "9684:17:66"
                }
              ]
            },
            "documentation": "@dev register a new proposal with the given parameters. Every proposal has a unique ID which is being\ngenerated by calculating keccak256 of a incremented counter.\n@param _paramsHash parameters hash\n@param _proposer address\n@param _organization address",
            "id": 18369,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "propose",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18154,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18147,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18369,
                  "src": "7582:7:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18146,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7582:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18149,
                  "name": "_paramsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 18369,
                  "src": "7591:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18148,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7591:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18151,
                  "name": "_proposer",
                  "nodeType": "VariableDeclaration",
                  "scope": 18369,
                  "src": "7612:17:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18150,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7612:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18153,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 18369,
                  "src": "7631:21:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18152,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7631:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7581:72:66"
            },
            "returnParameters": {
              "id": 18157,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18156,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18369,
                  "src": "7687:7:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18155,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7687:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7686:9:66"
            },
            "scope": 20436,
            "src": "7565:2143:66",
            "stateMutability": "nonpayable",
            "superFunction": 20517,
            "visibility": "external"
          },
          {
            "body": {
              "id": 18472,
              "nodeType": "Block",
              "src": "10059:995:66",
              "statements": [
                {
                  "assignments": [
                    18377
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18377,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 18472,
                      "src": "10069:25:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 18376,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "10069:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18381,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 18378,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18078,
                      "src": "10097:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 18380,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 18379,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18371,
                      "src": "10107:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10097:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10069:50:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 18393,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 18387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18383,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18377,
                              "src": "10137:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 18384,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "10137:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18385,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "10155:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 18386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Boosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10155:21:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "10137:39:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 18392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18388,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18377,
                              "src": "10180:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 18389,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "10180:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18390,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "10198:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 18391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "QuietEndingPeriod",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10198:31:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "10180:49:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "10137:92:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "70726f706f73616c20737461746520696e206e6f7420426f6f73746564206e6f72205175696574456e64696e67506572696f64",
                        "id": 18394,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10239:53:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d12753c56f593192768acab33c56c3c76e99c56e3892b0d2f229882577785553",
                          "typeString": "literal_string \"proposal state in not Boosted nor QuietEndingPeriod\""
                        },
                        "value": "proposal state in not Boosted nor QuietEndingPeriod"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d12753c56f593192768acab33c56c3c76e99c56e3892b0d2f229882577785553",
                          "typeString": "literal_string \"proposal state in not Boosted nor QuietEndingPeriod\""
                        }
                      ],
                      "id": 18382,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "10129:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18395,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10129:164:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18396,
                  "nodeType": "ExpressionStatement",
                  "src": "10129:164:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18399,
                            "name": "_proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18371,
                            "src": "10320:11:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 18398,
                          "name": "_execute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19885,
                          "src": "10311:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) returns (bool)"
                          }
                        },
                        "id": 18400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10311:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "70726f706f73616c206e65656420746f20657870697265",
                        "id": 18401,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10334:25:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_194736d0946e0cd4d131aa98afe9f266adc8d4f15ccac91b5a140d100c4a55cc",
                          "typeString": "literal_string \"proposal need to expire\""
                        },
                        "value": "proposal need to expire"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_194736d0946e0cd4d131aa98afe9f266adc8d4f15ccac91b5a140d100c4a55cc",
                          "typeString": "literal_string \"proposal need to expire\""
                        }
                      ],
                      "id": 18397,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "10303:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10303:57:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18403,
                  "nodeType": "ExpressionStatement",
                  "src": "10303:57:66"
                },
                {
                  "assignments": [
                    18405
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18405,
                      "name": "expirationCallBountyPercentage",
                      "nodeType": "VariableDeclaration",
                      "scope": 18472,
                      "src": "10370:38:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18404,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10370:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18426,
                  "initialValue": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "3135",
                                "id": 18422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10561:2:66",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_15_by_1",
                                  "typeString": "int_const 15"
                                },
                                "value": "15"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_15_by_1",
                                  "typeString": "int_const 15"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 18415,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18377,
                                            "src": "10537:8:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 18416,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "times",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17979,
                                          "src": "10537:14:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                            "typeString": "uint256[3] storage ref"
                                          }
                                        },
                                        "id": 18418,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 18417,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10552:1:66",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10537:17:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 18412,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18377,
                                          "src": "10494:8:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 18413,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "currentBoostedVotePeriodLimit",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17963,
                                        "src": "10494:38:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 18414,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 21287,
                                      "src": "10494:42:66",
                                      "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": 18419,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10494:61:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18410,
                                    "name": "now",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22173,
                                    "src": "10486:3:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18411,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 21263,
                                  "src": "10486:7:66",
                                  "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": 18420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10486:70:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18421,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21239,
                              "src": "10486:74:66",
                              "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": 18423,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10486:78:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 18407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10479:1:66",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 18406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10474:4:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint"
                            },
                            "id": 18408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10474:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 18409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 21287,
                          "src": "10474:11:66",
                          "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": 18424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10474:91:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 18425,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "10473:93:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10370:196:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18429,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 18427,
                      "name": "expirationCallBountyPercentage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18405,
                      "src": "10580:30:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "313030",
                      "id": 18428,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10613:3:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_100_by_1",
                        "typeString": "int_const 100"
                      },
                      "value": "100"
                    },
                    "src": "10580:36:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 18435,
                  "nodeType": "IfStatement",
                  "src": "10576:103:66",
                  "trueBody": {
                    "id": 18434,
                    "nodeType": "Block",
                    "src": "10618:61:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18430,
                            "name": "expirationCallBountyPercentage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18405,
                            "src": "10632:30:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 18431,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10665:3:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "10632:36:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18433,
                        "nodeType": "ExpressionStatement",
                        "src": "10632:36:66"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18440,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18436,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18377,
                        "src": "10688:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 18438,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "expirationCallBountyPercentage",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17975,
                      "src": "10688:39:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18439,
                      "name": "expirationCallBountyPercentage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18405,
                      "src": "10730:30:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10688:72:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18441,
                  "nodeType": "ExpressionStatement",
                  "src": "10688:72:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 18442,
                      "name": "expirationCallBounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18374,
                      "src": "10770:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "313030",
                          "id": 18451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10854:3:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100_by_1",
                            "typeString": "int_const 100"
                          },
                          "value": "100"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_100_by_1",
                            "typeString": "int_const 100"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18445,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18377,
                                  "src": "10828:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 18446,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "stakes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17997,
                                "src": "10828:15:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 18448,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 18447,
                                "name": "YES",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18099,
                                "src": "10844:3:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10828:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18443,
                              "name": "expirationCallBountyPercentage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18405,
                              "src": "10793:30:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 18444,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21215,
                            "src": "10793:34:66",
                            "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": 18449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10793:56:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "div",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21239,
                        "src": "10793:60:66",
                        "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": 18452,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10793:65:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10770:88:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18454,
                  "nodeType": "ExpressionStatement",
                  "src": "10770:88:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18458,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22171,
                              "src": "10898:3:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 18459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10898:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 18460,
                            "name": "expirationCallBounty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18374,
                            "src": "10910:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 18456,
                            "name": "stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18103,
                            "src": "10876:12:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$22137",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 18457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22079,
                          "src": "10876:21:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 18461,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10876:55:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7472616e7366657220746f206d73672e73656e646572206661696c6564",
                        "id": 18462,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10933:31:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b85ceb8ee02c2d2292ab8271b7e4c009f72c6e882f9263faea1f89e089f0781d",
                          "typeString": "literal_string \"transfer to msg.sender failed\""
                        },
                        "value": "transfer to msg.sender failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b85ceb8ee02c2d2292ab8271b7e4c009f72c6e882f9263faea1f89e089f0781d",
                          "typeString": "literal_string \"transfer to msg.sender failed\""
                        }
                      ],
                      "id": 18455,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "10868:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18463,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10868:97:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18464,
                  "nodeType": "ExpressionStatement",
                  "src": "10868:97:66"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18466,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18371,
                        "src": "11001:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18467,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22171,
                          "src": "11014:3:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 18468,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11014:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18469,
                        "name": "expirationCallBounty",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18374,
                        "src": "11026:20:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 18465,
                      "name": "ExpirationCallBounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18064,
                      "src": "10980:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,uint256)"
                      }
                    },
                    "id": 18470,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10980:67:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18471,
                  "nodeType": "EmitStatement",
                  "src": "10975:72:66"
                }
              ]
            },
            "documentation": "@dev executeBoosted try to execute a boosted or QuietEndingPeriod proposal if it is expired\n@param _proposalId the id of the proposal\n@return uint256 expirationCallBounty the bounty amount for the expiration call",
            "id": 18473,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "executeBoosted",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18372,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18371,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 18473,
                  "src": "9991:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18370,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9991:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9990:21:66"
            },
            "returnParameters": {
              "id": 18375,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18374,
                  "name": "expirationCallBounty",
                  "nodeType": "VariableDeclaration",
                  "scope": 18473,
                  "src": "10029:28:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18373,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10029:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10028:30:66"
            },
            "scope": 20436,
            "src": "9967:1087:66",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 18660,
              "nodeType": "Block",
              "src": "12178:1650:66",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 18495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18485,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18477,
                              "src": "12196:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                "typeString": "uint256[11] calldata"
                              }
                            },
                            "id": 18487,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12204:1:66",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12196:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 18488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12210:3:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "12196:17:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18490,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18477,
                              "src": "12217:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                "typeString": "uint256[11] calldata"
                              }
                            },
                            "id": 18492,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18491,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12225:1:66",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12217:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "3530",
                            "id": 18493,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12231:2:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_50_by_1",
                              "typeString": "int_const 50"
                            },
                            "value": "50"
                          },
                          "src": "12217:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12196:37:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "3530203c3d20717565756564566f7465526571756972656450657263656e74616765203c3d20313030",
                        "id": 18496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12235:43:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_85b9f97a846fa88401fdf1381ec2257f07804de0b75677db4c2efd7a2ce62825",
                          "typeString": "literal_string \"50 <= queuedVoteRequiredPercentage <= 100\""
                        },
                        "value": "50 <= queuedVoteRequiredPercentage <= 100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_85b9f97a846fa88401fdf1381ec2257f07804de0b75677db4c2efd7a2ce62825",
                          "typeString": "literal_string \"50 <= queuedVoteRequiredPercentage <= 100\""
                        }
                      ],
                      "id": 18484,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "12188:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12188:91:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18498,
                  "nodeType": "ExpressionStatement",
                  "src": "12188:91:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 18510,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18500,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18477,
                              "src": "12297:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                "typeString": "uint256[11] calldata"
                              }
                            },
                            "id": 18502,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "34",
                              "id": 18501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12305:1:66",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12297:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "3136303030",
                            "id": 18503,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12311:5:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_16000_by_1",
                              "typeString": "int_const 16000"
                            },
                            "value": "16000"
                          },
                          "src": "12297:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18505,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18477,
                              "src": "12320:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                "typeString": "uint256[11] calldata"
                              }
                            },
                            "id": 18507,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "34",
                              "id": 18506,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12328:1:66",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12320:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31303030",
                            "id": 18508,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12333:4:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000_by_1",
                              "typeString": "int_const 1000"
                            },
                            "value": "1000"
                          },
                          "src": "12320:17:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12297:40:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31303030203c207468726573686f6c64436f6e7374203c3d203136303030",
                        "id": 18511,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12339:32:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_daddeca132c5a35f259acc956e39955b67e80315dbd0a39292b027685447fb58",
                          "typeString": "literal_string \"1000 < thresholdConst <= 16000\""
                        },
                        "value": "1000 < thresholdConst <= 16000"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_daddeca132c5a35f259acc956e39955b67e80315dbd0a39292b027685447fb58",
                          "typeString": "literal_string \"1000 < thresholdConst <= 16000\""
                        }
                      ],
                      "id": 18499,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "12289:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12289:83:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18513,
                  "nodeType": "ExpressionStatement",
                  "src": "12289:83:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18515,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "12390:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18517,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "37",
                            "id": 18516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12398:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_7_by_1",
                              "typeString": "int_const 7"
                            },
                            "value": "7"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12390:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313030",
                          "id": 18518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12404:3:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100_by_1",
                            "typeString": "int_const 100"
                          },
                          "value": "100"
                        },
                        "src": "12390:17:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "766f7465727352657075746174696f6e4c6f7373526174696f203c3d20313030",
                        "id": 18520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12409:34:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b9a8ef96bdbf8c6f5867a44627f3e55d258417d72b6eee622f0941021e48ccc2",
                          "typeString": "literal_string \"votersReputationLossRatio <= 100\""
                        },
                        "value": "votersReputationLossRatio <= 100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b9a8ef96bdbf8c6f5867a44627f3e55d258417d72b6eee622f0941021e48ccc2",
                          "typeString": "literal_string \"votersReputationLossRatio <= 100\""
                        }
                      ],
                      "id": 18514,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "12382:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18521,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12382:62:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18522,
                  "nodeType": "ExpressionStatement",
                  "src": "12382:62:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18524,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "12462:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18526,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 18525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12470:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12462:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18527,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "12476:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18529,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 18528,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12484:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12476:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12462:24:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "626f6f73746564566f7465506572696f644c696d6974203e3d207175696574456e64696e67506572696f64",
                        "id": 18531,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12488:45:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_609d5e4f75f374c5d875da125e2b6693907dc86231a6a7783cbd890bcb51f823",
                          "typeString": "literal_string \"boostedVotePeriodLimit >= quietEndingPeriod\""
                        },
                        "value": "boostedVotePeriodLimit >= quietEndingPeriod"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_609d5e4f75f374c5d875da125e2b6693907dc86231a6a7783cbd890bcb51f823",
                          "typeString": "literal_string \"boostedVotePeriodLimit >= quietEndingPeriod\""
                        }
                      ],
                      "id": 18523,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "12454:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18532,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12454:80:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18533,
                  "nodeType": "ExpressionStatement",
                  "src": "12454:80:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18539,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18535,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "12552:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18537,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 18536,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12560:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12552:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 18538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12565:1:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "12552:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6d696e696d756d44616f426f756e74792073686f756c64206265203e2030",
                        "id": 18540,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12568:32:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9a2fb70181672a535ab2f25b5eb32644096d5daab13cf3cb8ef2cfc2561af9a3",
                          "typeString": "literal_string \"minimumDaoBounty should be > 0\""
                        },
                        "value": "minimumDaoBounty should be > 0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9a2fb70181672a535ab2f25b5eb32644096d5daab13cf3cb8ef2cfc2561af9a3",
                          "typeString": "literal_string \"minimumDaoBounty should be > 0\""
                        }
                      ],
                      "id": 18534,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "12544:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18541,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12544:57:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18542,
                  "nodeType": "ExpressionStatement",
                  "src": "12544:57:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18548,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18544,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "12619:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18546,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "39",
                            "id": 18545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12627:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_9_by_1",
                              "typeString": "int_const 9"
                            },
                            "value": "9"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12619:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 18547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12632:1:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "12619:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "64616f426f756e7479436f6e73742073686f756c64206265203e2030",
                        "id": 18549,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12635:30:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_996a184b88eb3effd28e9cef20fafeecddc7873295cdda23c6bb178b43ff4ba3",
                          "typeString": "literal_string \"daoBountyConst should be > 0\""
                        },
                        "value": "daoBountyConst should be > 0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_996a184b88eb3effd28e9cef20fafeecddc7873295cdda23c6bb178b43ff4ba3",
                          "typeString": "literal_string \"daoBountyConst should be > 0\""
                        }
                      ],
                      "id": 18543,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "12611:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12611:55:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18551,
                  "nodeType": "ExpressionStatement",
                  "src": "12611:55:66"
                },
                {
                  "assignments": [
                    18553
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18553,
                      "name": "paramsHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 18660,
                      "src": "12677:18:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 18552,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "12677:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18558,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 18555,
                        "name": "_params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18477,
                        "src": "12716:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                          "typeString": "uint256[11] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 18556,
                        "name": "_voteOnBehalf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18479,
                        "src": "12725:13:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                          "typeString": "uint256[11] calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 18554,
                      "name": "getParametersHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19381,
                      "src": "12698:17:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint256_$11_memory_ptr_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (uint256[11] memory,address) pure returns (bytes32)"
                      }
                    },
                    "id": 18557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12698:41:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12677:62:66"
                },
                {
                  "assignments": [
                    18560
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18560,
                      "name": "limitExponent",
                      "nodeType": "VariableDeclaration",
                      "scope": 18660,
                      "src": "12819:21:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18559,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12819:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18562,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "313732",
                    "id": 18561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12843:3:66",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_172_by_1",
                      "typeString": "int_const 172"
                    },
                    "value": "172"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12819:27:66"
                },
                {
                  "assignments": [
                    18564
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18564,
                      "name": "j",
                      "nodeType": "VariableDeclaration",
                      "scope": 18660,
                      "src": "12883:9:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18563,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12883:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18566,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 18565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12895:1:66",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12883:13:66"
                },
                {
                  "body": {
                    "id": 18607,
                    "nodeType": "Block",
                    "src": "12949:173:66",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 18594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18580,
                                    "name": "_params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18477,
                                    "src": "12968:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                      "typeString": "uint256[11] calldata"
                                    }
                                  },
                                  "id": 18582,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "34",
                                    "id": 18581,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12976:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12968:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 18583,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18568,
                                  "src": "12981:1:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12968:14:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 18585,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12967:16:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18592,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18586,
                                    "name": "_params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18477,
                                    "src": "12988:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                      "typeString": "uint256[11] calldata"
                                    }
                                  },
                                  "id": 18588,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "34",
                                    "id": 18587,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12996:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12988:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 18591,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 18589,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18568,
                                    "src": "13002:1:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 18590,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13004:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "13002:3:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12988:17:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 18593,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12987:19:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12967:39:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 18603,
                        "nodeType": "IfStatement",
                        "src": "12963:132:66",
                        "trueBody": {
                          "id": 18602,
                          "nodeType": "Block",
                          "src": "13008:87:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18599,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 18595,
                                  "name": "limitExponent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18560,
                                  "src": "13026:13:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 18598,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 18596,
                                    "name": "limitExponent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18560,
                                    "src": "13042:13:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 18597,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18564,
                                    "src": "13056:1:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "13042:15:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13026:31:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18600,
                              "nodeType": "ExpressionStatement",
                              "src": "13026:31:66"
                            },
                            {
                              "id": 18601,
                              "nodeType": "Break",
                              "src": "13075:5:66"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "13108:3:66",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 18604,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18564,
                            "src": "13108:1:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18606,
                        "nodeType": "ExpressionStatement",
                        "src": "13108:3:66"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18573,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 18571,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18568,
                      "src": "12929:1:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3136303030",
                      "id": 18572,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12933:5:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_16000_by_1",
                        "typeString": "int_const 16000"
                      },
                      "value": "16000"
                    },
                    "src": "12929:9:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 18608,
                  "initializationExpression": {
                    "assignments": [
                      18568
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 18568,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 18608,
                        "src": "12911:9:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18567,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12911:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 18570,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "32303030",
                      "id": 18569,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12923:4:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2000_by_1",
                        "typeString": "int_const 2000"
                      },
                      "value": "2000"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "12911:16:66"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 18578,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 18574,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18568,
                        "src": "12940:1:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18577,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 18575,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18568,
                          "src": "12944:1:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 18576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12946:1:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "12944:3:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "12940:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 18579,
                    "nodeType": "ExpressionStatement",
                    "src": "12940:7:66"
                  },
                  "nodeType": "ForStatement",
                  "src": "12906:216:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18656,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 18609,
                        "name": "parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18074,
                        "src": "13132:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                          "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                        }
                      },
                      "id": 18611,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 18610,
                        "name": "paramsHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18553,
                        "src": "13143:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13132:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                        "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18613,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13212:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18615,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 18614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13220:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13212:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18616,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13259:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18618,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 18617,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13267:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13259:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18619,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13307:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18621,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 18620,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13315:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13307:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18622,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13358:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18624,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "33",
                            "id": 18623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13366:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13358:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31303030",
                                  "id": 18632,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13434:4:66",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  },
                                  "value": "1000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  }
                                ],
                                "id": 18631,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13426:7:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint216_$",
                                  "typeString": "type(uint216)"
                                },
                                "typeName": "uint216"
                              },
                              "id": 18633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13426:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint216",
                                "typeString": "uint216"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint216",
                                "typeString": "uint216"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18626,
                                    "name": "_params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18477,
                                    "src": "13405:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                      "typeString": "uint256[11] calldata"
                                    }
                                  },
                                  "id": 18628,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "34",
                                    "id": 18627,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13413:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13405:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 18625,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13397:7:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint216_$",
                                  "typeString": "type(uint216)"
                                },
                                "typeName": "uint216"
                              },
                              "id": 18629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13397:19:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint216",
                                "typeString": "uint216"
                              }
                            },
                            "id": 18630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fraction",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16523,
                            "src": "13397:28:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint216_$_t_uint216_$returns$_t_uint256_$bound_to$_t_uint216_$",
                              "typeString": "function (uint216,uint216) pure returns (uint256)"
                            }
                          },
                          "id": 18634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13397:43:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 18635,
                          "name": "limitExponent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18560,
                          "src": "13473:13:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18636,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13519:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18638,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 18637,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13527:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13519:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18639,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13563:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18641,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "36",
                            "id": 18640,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13571:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_6_by_1",
                              "typeString": "int_const 6"
                            },
                            "value": "6"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13563:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18642,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13613:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18644,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "37",
                            "id": 18643,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13621:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_7_by_1",
                              "typeString": "int_const 7"
                            },
                            "value": "7"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13613:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18645,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13654:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18647,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 18646,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13662:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13654:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18648,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13693:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18650,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "39",
                            "id": 18649,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13701:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_9_by_1",
                              "typeString": "int_const 9"
                            },
                            "value": "9"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13693:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 18651,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "13732:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 18653,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 18652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13740:2:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13732:11:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 18654,
                          "name": "_voteOnBehalf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18479,
                          "src": "13770:13:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 18612,
                        "name": "Parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17937,
                        "src": "13157:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Parameters_$17937_storage_ptr_$",
                          "typeString": "type(struct GenesisProtocolLogic.Parameters storage pointer)"
                        }
                      },
                      "id": 18655,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "queuedVoteRequiredPercentage",
                        "queuedVotePeriodLimit",
                        "boostedVotePeriodLimit",
                        "preBoostedVotePeriodLimit",
                        "thresholdConst",
                        "limitExponentValue",
                        "quietEndingPeriod",
                        "proposingRepReward",
                        "votersReputationLossRatio",
                        "minimumDaoBounty",
                        "daoBountyConst",
                        "activationTime",
                        "voteOnBehalf"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "13157:637:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$17937_memory",
                        "typeString": "struct GenesisProtocolLogic.Parameters memory"
                      }
                    },
                    "src": "13132:662:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "id": 18657,
                  "nodeType": "ExpressionStatement",
                  "src": "13132:662:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18658,
                    "name": "paramsHash",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18553,
                    "src": "13811:10:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 18483,
                  "id": 18659,
                  "nodeType": "Return",
                  "src": "13804:17:66"
                }
              ]
            },
            "documentation": "@dev hash the parameters, save them if necessary, and return the hash value\n@param _params a parameters array\n   _params[0] - _queuedVoteRequiredPercentage,\n   _params[1] - _queuedVotePeriodLimit, //the time limit for a proposal to be in an absolute voting mode.\n   _params[2] - _boostedVotePeriodLimit, //the time limit for a proposal to be in an relative voting mode.\n   _params[3] - _preBoostedVotePeriodLimit, //the time limit for a proposal to be in an preparation\n                 state (stable) before boosted.\n   _params[4] -_thresholdConst\n   _params[5] -_quietEndingPeriod\n   _params[6] -_proposingRepReward\n   _params[7] -_votersReputationLossRatio\n   _params[8] -_minimumDaoBounty\n   _params[9] -_daoBountyConst\n   _params[10] -_activationTime\n@param _voteOnBehalf - authorized to vote on behalf of others.",
            "id": 18661,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setParameters",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18480,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18477,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 18661,
                  "src": "12031:25:66",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                    "typeString": "uint256[11]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 18474,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "12031:4:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 18476,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "3131",
                      "id": 18475,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12036:2:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_11_by_1",
                        "typeString": "int_const 11"
                      },
                      "value": "11"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "12031:8:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$11_storage_ptr",
                      "typeString": "uint256[11]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18479,
                  "name": "_voteOnBehalf",
                  "nodeType": "VariableDeclaration",
                  "scope": 18661,
                  "src": "12112:21:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18478,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12112:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12021:118:66"
            },
            "returnParameters": {
              "id": 18483,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18482,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 18661,
                  "src": "12165:7:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18481,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12165:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12164:9:66"
            },
            "scope": 20436,
            "src": "11999:1829:66",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 19120,
              "nodeType": "Block",
              "src": "14486:3933:66",
              "statements": [
                {
                  "assignments": [
                    18673
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18673,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 19120,
                      "src": "14496:25:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 18672,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "14496:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18677,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 18674,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18078,
                      "src": "14524:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 18676,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 18675,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18663,
                      "src": "14534:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14524:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14496:50:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 18691,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              },
                              "id": 18683,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18679,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18673,
                                  "src": "14565:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 18680,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "state",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17957,
                                "src": "14565:14:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18681,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17903,
                                  "src": "14583:13:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                    "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                  }
                                },
                                "id": 18682,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Executed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "14583:22:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "src": "14565:40:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 18684,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "14564:42:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              },
                              "id": 18689,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18685,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18673,
                                  "src": "14609:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 18686,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "state",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17957,
                                "src": "14609:14:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18687,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17903,
                                  "src": "14627:13:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                    "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                  }
                                },
                                "id": 18688,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "ExpiredInQueue",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "14627:28:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "src": "14609:46:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 18690,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "14608:48:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "14564:92:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "50726f706f73616c2073686f756c64206265204578656375746564206f722045787069726564496e5175657565",
                        "id": 18692,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14666:47:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4e192fc0c0c06bbf22b55d1039c663d5c5a02b944d66c77797d07c1d4ad01bb5",
                          "typeString": "literal_string \"Proposal should be Executed or ExpiredInQueue\""
                        },
                        "value": "Proposal should be Executed or ExpiredInQueue"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4e192fc0c0c06bbf22b55d1039c663d5c5a02b944d66c77797d07c1d4ad01bb5",
                          "typeString": "literal_string \"Proposal should be Executed or ExpiredInQueue\""
                        }
                      ],
                      "id": 18678,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "14556:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 18693,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14556:158:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18694,
                  "nodeType": "ExpressionStatement",
                  "src": "14556:158:66"
                },
                {
                  "assignments": [
                    18696
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18696,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 19120,
                      "src": "14724:24:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 18695,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17937,
                        "src": "14724:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18701,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 18697,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18074,
                      "src": "14751:10:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                      }
                    },
                    "id": 18700,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18698,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18673,
                        "src": "14762:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 18699,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17965,
                      "src": "14762:19:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14751:31:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14724:58:66"
                },
                {
                  "assignments": [
                    18703
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18703,
                      "name": "lostReputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 19120,
                      "src": "14792:22:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18702,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14792:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18704,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14792:22:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18708,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18705,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18673,
                        "src": "14828:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 18706,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "winningVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17959,
                      "src": "14828:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 18707,
                      "name": "YES",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18099,
                      "src": "14852:3:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14828:27:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 18724,
                    "nodeType": "Block",
                    "src": "14933:71:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18717,
                            "name": "lostReputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18703,
                            "src": "14947:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18718,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18673,
                                "src": "14964:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 18719,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "preBoostedVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17989,
                              "src": "14964:24:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 18721,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 18720,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18099,
                              "src": "14989:3:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14964:29:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14947:46:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18723,
                        "nodeType": "ExpressionStatement",
                        "src": "14947:46:66"
                      }
                    ]
                  },
                  "id": 18725,
                  "nodeType": "IfStatement",
                  "src": "14824:180:66",
                  "trueBody": {
                    "id": 18716,
                    "nodeType": "Block",
                    "src": "14857:70:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18709,
                            "name": "lostReputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18703,
                            "src": "14871:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18710,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18673,
                                "src": "14888:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 18711,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "preBoostedVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17989,
                              "src": "14888:24:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 18713,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 18712,
                              "name": "NO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18096,
                              "src": "14913:2:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14888:28:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14871:45:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18715,
                        "nodeType": "ExpressionStatement",
                        "src": "14871:45:66"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18735,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 18726,
                      "name": "lostReputation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18703,
                      "src": "15013:14:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 18734,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18729,
                                  "name": "params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18696,
                                  "src": "15050:6:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                  }
                                },
                                "id": 18730,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "votersReputationLossRatio",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17928,
                                "src": "15050:32:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 18727,
                                "name": "lostReputation",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18703,
                                "src": "15031:14:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18728,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21215,
                              "src": "15031:18:66",
                              "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": 18731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15031:52:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 18732,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "15030:54:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "313030",
                        "id": 18733,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15085:3:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        },
                        "value": "100"
                      },
                      "src": "15030:58:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15013:75:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18736,
                  "nodeType": "ExpressionStatement",
                  "src": "15013:75:66"
                },
                {
                  "assignments": [
                    18738
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18738,
                      "name": "staker",
                      "nodeType": "VariableDeclaration",
                      "scope": 19120,
                      "src": "15118:21:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Staker"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 18737,
                        "name": "Staker",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17951,
                        "src": "15118:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18743,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18739,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18673,
                        "src": "15142:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 18740,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18001,
                      "src": "15142:16:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$17951_storage_$",
                        "typeString": "mapping(address => struct GenesisProtocolLogic.Staker storage ref)"
                      }
                    },
                    "id": 18742,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 18741,
                      "name": "_beneficiary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18665,
                      "src": "15159:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "15142:30:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$17951_storage",
                      "typeString": "struct GenesisProtocolLogic.Staker storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15118:54:66"
                },
                {
                  "assignments": [
                    18745
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18745,
                      "name": "totalStakes",
                      "nodeType": "VariableDeclaration",
                      "scope": 19120,
                      "src": "15182:19:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18744,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15182:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18756,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18751,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18673,
                            "src": "15228:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 18752,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stakes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17997,
                          "src": "15228:15:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                            "typeString": "mapping(uint256 => uint256)"
                          }
                        },
                        "id": 18754,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 18753,
                          "name": "YES",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18099,
                          "src": "15244:3:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "15228:20:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18746,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18673,
                            "src": "15204:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 18747,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stakes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17997,
                          "src": "15204:15:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                            "typeString": "mapping(uint256 => uint256)"
                          }
                        },
                        "id": 18749,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 18748,
                          "name": "NO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18096,
                          "src": "15220:2:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "15204:19:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 18750,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21287,
                      "src": "15204:23:66",
                      "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": 18755,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15204:45:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15182:67:66"
                },
                {
                  "assignments": [
                    18758
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18758,
                      "name": "totalWinningStakes",
                      "nodeType": "VariableDeclaration",
                      "scope": 19120,
                      "src": "15259:26:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18757,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15259:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18764,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18759,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18673,
                        "src": "15288:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 18760,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17997,
                      "src": "15288:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 18763,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18761,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18673,
                        "src": "15304:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 18762,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "winningVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17959,
                      "src": "15304:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "15288:37:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15259:66:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18768,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18765,
                        "name": "staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18738,
                        "src": "15340:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                        }
                      },
                      "id": 18766,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "amount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17948,
                      "src": "15340:13:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 18767,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15356:1:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "15340:17:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 18861,
                  "nodeType": "IfStatement",
                  "src": "15336:980:66",
                  "trueBody": {
                    "id": 18860,
                    "nodeType": "Block",
                    "src": "15359:957:66",
                    "statements": [
                      {
                        "assignments": [
                          18770
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18770,
                            "name": "totalStakesLeftAfterCallBounty",
                            "nodeType": "VariableDeclaration",
                            "scope": 18860,
                            "src": "15373:38:66",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18769,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15373:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18785,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "313030",
                                  "id": 18782,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15512:3:66",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_100_by_1",
                                    "typeString": "int_const 100"
                                  },
                                  "value": "100"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_100_by_1",
                                    "typeString": "int_const 100"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 18776,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18673,
                                          "src": "15486:8:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 18777,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "stakes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17997,
                                        "src": "15486:15:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                          "typeString": "mapping(uint256 => uint256)"
                                        }
                                      },
                                      "id": 18779,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 18778,
                                        "name": "YES",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18099,
                                        "src": "15502:3:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "15486:20:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 18773,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18673,
                                        "src": "15442:8:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 18774,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "expirationCallBountyPercentage",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17975,
                                      "src": "15442:39:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 18775,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 21215,
                                    "src": "15442:43:66",
                                    "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": 18780,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15442:65:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 18781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21239,
                                "src": "15442:69:66",
                                "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": 18783,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15442:74:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18771,
                              "name": "totalStakes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18745,
                              "src": "15426:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 18772,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21263,
                            "src": "15426:15:66",
                            "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": 18784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15426:91:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15373:144:66"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 18790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18786,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18673,
                              "src": "15535:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 18787,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "15535:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18788,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "15553:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 18789,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "ExpiredInQueue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "15553:28:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "15535:46:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 18803,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18799,
                                "name": "staker",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18738,
                                "src": "15738:6:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                }
                              },
                              "id": 18800,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17946,
                              "src": "15738:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18801,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18673,
                                "src": "15753:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 18802,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17959,
                              "src": "15753:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15738:35:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 18852,
                          "nodeType": "IfStatement",
                          "src": "15734:541:66",
                          "trueBody": {
                            "id": 18851,
                            "nodeType": "Block",
                            "src": "15775:500:66",
                            "statements": [
                              {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 18807,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18804,
                                      "name": "staker",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18738,
                                      "src": "15797:6:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                      }
                                    },
                                    "id": 18805,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "vote",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17946,
                                    "src": "15797:11:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 18806,
                                    "name": "YES",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18099,
                                    "src": "15812:3:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "15797:18:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 18849,
                                  "nodeType": "Block",
                                  "src": "16137:124:66",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 18847,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 18836,
                                            "name": "rewards",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18670,
                                            "src": "16159:7:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                              "typeString": "uint256[3] memory"
                                            }
                                          },
                                          "id": 18838,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 18837,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "16167:1:66",
                                            "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": "16159:10:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 18846,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "components": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 18842,
                                                    "name": "totalStakesLeftAfterCallBounty",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 18770,
                                                    "src": "16191:30:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 18839,
                                                      "name": "staker",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 18738,
                                                      "src": "16173:6:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                                        "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                                      }
                                                    },
                                                    "id": 18840,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "amount",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 17948,
                                                    "src": "16173:13:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 18841,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "mul",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 21215,
                                                  "src": "16173:17:66",
                                                  "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": 18843,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "16173:49:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 18844,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "16172:51:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 18845,
                                            "name": "totalWinningStakes",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18758,
                                            "src": "16224:18:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "16172:70:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16159:83:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 18848,
                                      "nodeType": "ExpressionStatement",
                                      "src": "16159:83:66"
                                    }
                                  ]
                                },
                                "id": 18850,
                                "nodeType": "IfStatement",
                                "src": "15793:468:66",
                                "trueBody": {
                                  "id": 18835,
                                  "nodeType": "Block",
                                  "src": "15817:314:66",
                                  "statements": [
                                    {
                                      "condition": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 18811,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 18808,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18673,
                                            "src": "15843:8:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 18809,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "daoBounty",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17969,
                                          "src": "15843:18:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 18810,
                                          "name": "totalStakesLeftAfterCallBounty",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18770,
                                          "src": "15864:30:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "15843:51:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": null,
                                      "id": 18834,
                                      "nodeType": "IfStatement",
                                      "src": "15839:274:66",
                                      "trueBody": {
                                        "id": 18833,
                                        "nodeType": "Block",
                                        "src": "15896:217:66",
                                        "statements": [
                                          {
                                            "assignments": [
                                              18813
                                            ],
                                            "declarations": [
                                              {
                                                "constant": false,
                                                "id": 18813,
                                                "name": "_totalStakes",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 18833,
                                                "src": "15922:20:66",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "typeName": {
                                                  "id": 18812,
                                                  "name": "uint256",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "15922:7:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "value": null,
                                                "visibility": "internal"
                                              }
                                            ],
                                            "id": 18819,
                                            "initialValue": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 18816,
                                                    "name": "proposal",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 18673,
                                                    "src": "15980:8:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                    }
                                                  },
                                                  "id": 18817,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "daoBounty",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 17969,
                                                  "src": "15980:18:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 18814,
                                                  "name": "totalStakesLeftAfterCallBounty",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18770,
                                                  "src": "15945:30:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 18815,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 21263,
                                                "src": "15945:34:66",
                                                "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": 18818,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "15945:54:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "15922:77:66"
                                          },
                                          {
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 18831,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 18820,
                                                  "name": "rewards",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18670,
                                                  "src": "16025:7:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                                    "typeString": "uint256[3] memory"
                                                  }
                                                },
                                                "id": 18822,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "30",
                                                  "id": 18821,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "16033:1:66",
                                                  "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": "16025:10:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 18830,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "components": [
                                                    {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 18826,
                                                          "name": "_totalStakes",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 18813,
                                                          "src": "16057:12:66",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "expression": {
                                                            "argumentTypes": null,
                                                            "id": 18823,
                                                            "name": "staker",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 18738,
                                                            "src": "16039:6:66",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                                              "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                                            }
                                                          },
                                                          "id": 18824,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberName": "amount",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 17948,
                                                          "src": "16039:13:66",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 18825,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 21215,
                                                        "src": "16039:17:66",
                                                        "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": 18827,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "16039:31:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "id": 18828,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "TupleExpression",
                                                  "src": "16038:33:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "/",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "id": 18829,
                                                  "name": "totalWinningStakes",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18758,
                                                  "src": "16072:18:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "16038:52:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "16025:65:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 18832,
                                            "nodeType": "ExpressionStatement",
                                            "src": "16025:65:66"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        },
                        "id": 18853,
                        "nodeType": "IfStatement",
                        "src": "15531:744:66",
                        "trueBody": {
                          "id": 18798,
                          "nodeType": "Block",
                          "src": "15583:145:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18791,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18670,
                                    "src": "15687:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 18793,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 18792,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15695:1:66",
                                    "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": "15687:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18794,
                                    "name": "staker",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18738,
                                    "src": "15700:6:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                    }
                                  },
                                  "id": 18795,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "amount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17948,
                                  "src": "15700:13:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15687:26:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18797,
                              "nodeType": "ExpressionStatement",
                              "src": "15687:26:66"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18854,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18738,
                              "src": "16288:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 18856,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17948,
                            "src": "16288:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 18857,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16304:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "16288:17:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18859,
                        "nodeType": "ExpressionStatement",
                        "src": "16288:17:66"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 18883,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 18878,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 18872,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 18865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18862,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18673,
                              "src": "16367:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 18863,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "daoRedeemItsWinnings",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17981,
                            "src": "16367:29:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 18864,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16400:5:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "16367:38:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 18871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 18866,
                            "name": "_beneficiary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18665,
                            "src": "16421:12:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18867,
                              "name": "organizations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18086,
                              "src": "16437:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                "typeString": "mapping(bytes32 => address)"
                              }
                            },
                            "id": 18870,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18868,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18673,
                                "src": "16451:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 18869,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "organizationId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17953,
                              "src": "16451:23:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16437:38:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "16421:54:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "16367:108:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ProposalState_$17903",
                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                        },
                        "id": 18877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18873,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18673,
                            "src": "16491:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 18874,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "state",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17957,
                          "src": "16491:14:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18875,
                            "name": "ProposalState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17903,
                            "src": "16509:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                              "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                            }
                          },
                          "id": 18876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "ExpiredInQueue",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "16509:28:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "src": "16491:46:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "16367:170:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 18882,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18879,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18673,
                          "src": "16553:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 18880,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "winningVote",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17959,
                        "src": "16553:20:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 18881,
                        "name": "NO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18096,
                        "src": "16577:2:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "16553:26:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "16367:212:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 18913,
                  "nodeType": "IfStatement",
                  "src": "16363:414:66",
                  "trueBody": {
                    "id": 18912,
                    "nodeType": "Block",
                    "src": "16581:196:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18884,
                              "name": "rewards",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18670,
                              "src": "16595:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                "typeString": "uint256[3] memory"
                              }
                            },
                            "id": 18886,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 18885,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16603:1:66",
                              "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": "16595:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18901,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18673,
                                  "src": "16697:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 18902,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "daoBounty",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17969,
                                "src": "16697:18:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 18898,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 18894,
                                              "name": "totalStakes",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18745,
                                              "src": "16659:11:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 18891,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18673,
                                                "src": "16636:8:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 18892,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "daoBounty",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 17969,
                                              "src": "16636:18:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 18893,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 21215,
                                            "src": "16636:22:66",
                                            "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": 18895,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "16636:35:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 18896,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "16635:37:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 18897,
                                      "name": "totalWinningStakes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18758,
                                      "src": "16673:18:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "16635:56:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 18887,
                                      "name": "rewards",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18670,
                                      "src": "16620:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                        "typeString": "uint256[3] memory"
                                      }
                                    },
                                    "id": 18889,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 18888,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "16628:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "16620:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18890,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 21287,
                                  "src": "16620:14:66",
                                  "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": 18899,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16620:72:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18900,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21263,
                              "src": "16620:76:66",
                              "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": 18903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16620:96:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16595:121:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18905,
                        "nodeType": "ExpressionStatement",
                        "src": "16595:121:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18906,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18673,
                              "src": "16730:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 18908,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoRedeemItsWinnings",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17981,
                            "src": "16730:29:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 18909,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16762:4:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "16730:36:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18911,
                        "nodeType": "ExpressionStatement",
                        "src": "16730:36:66"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    18915
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18915,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 19120,
                      "src": "16806:19:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Voter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 18914,
                        "name": "Voter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17944,
                        "src": "16806:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Voter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18920,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 18916,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18673,
                        "src": "16828:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 18917,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17993,
                      "src": "16828:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$17944_storage_$",
                        "typeString": "mapping(address => struct GenesisProtocolLogic.Voter storage ref)"
                      }
                    },
                    "id": 18919,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 18918,
                      "name": "_beneficiary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18665,
                      "src": "16844:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "16828:29:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$17944_storage",
                      "typeString": "struct GenesisProtocolLogic.Voter storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16806:51:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 18929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18921,
                              "name": "voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18915,
                              "src": "16872:5:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                              }
                            },
                            "id": 18922,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "reputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17941,
                            "src": "16872:16:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 18923,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16892:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "16872:21:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 18925,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "16871:23:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18926,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18915,
                            "src": "16899:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                            }
                          },
                          "id": 18927,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "preBoosted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17943,
                          "src": "16899:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 18928,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "16898:18:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "16871:45:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 18995,
                  "nodeType": "IfStatement",
                  "src": "16867:582:66",
                  "trueBody": {
                    "id": 18994,
                    "nodeType": "Block",
                    "src": "16918:531:66",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 18934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18930,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18673,
                              "src": "16936:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 18931,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "16936:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18932,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "16954:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 18933,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "ExpiredInQueue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "16954:28:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "16936:46:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 18955,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18951,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18673,
                                "src": "17153:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 18952,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17959,
                              "src": "17153:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18953,
                                "name": "voter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18915,
                                "src": "17177:5:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                                }
                              },
                              "id": 18954,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17939,
                              "src": "17177:10:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17153:34:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 18986,
                          "nodeType": "IfStatement",
                          "src": "17149:256:66",
                          "trueBody": {
                            "id": 18985,
                            "nodeType": "Block",
                            "src": "17189:216:66",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18983,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 18956,
                                      "name": "rewards",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18670,
                                      "src": "17207:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                        "typeString": "uint256[3] memory"
                                      }
                                    },
                                    "id": 18958,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 18957,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17215:1:66",
                                      "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": "17207:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 18981,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 18973,
                                                  "name": "lostReputation",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18703,
                                                  "src": "17326:14:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 18970,
                                                    "name": "voter",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 18915,
                                                    "src": "17305:5:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                                                      "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                                                    }
                                                  },
                                                  "id": 18971,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "reputation",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 17941,
                                                  "src": "17305:16:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 18972,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "mul",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 21215,
                                                "src": "17305:20:66",
                                                "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": 18974,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "17305:36:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 18975,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "17304:38:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 18976,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18673,
                                              "src": "17343:8:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 18977,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "preBoostedVotes",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17989,
                                            "src": "17343:24:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                              "typeString": "mapping(uint256 => uint256)"
                                            }
                                          },
                                          "id": 18980,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 18978,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18673,
                                              "src": "17368:8:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 18979,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "winningVote",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17959,
                                            "src": "17368:20:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "17343:46:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "17304:85:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 18967,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "components": [
                                                {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 18962,
                                                        "name": "params",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 18696,
                                                        "src": "17243:6:66",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                                        }
                                                      },
                                                      "id": 18963,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "votersReputationLossRatio",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 17928,
                                                      "src": "17243:32:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 18959,
                                                        "name": "voter",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 18915,
                                                        "src": "17222:5:66",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                                                        }
                                                      },
                                                      "id": 18960,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "reputation",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 17941,
                                                      "src": "17222:16:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 18961,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mul",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 21215,
                                                    "src": "17222:20:66",
                                                    "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": 18964,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "17222:54:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 18965,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "17221:56:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "/",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "313030",
                                              "id": 18966,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "17278:3:66",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_100_by_1",
                                                "typeString": "int_const 100"
                                              },
                                              "value": "100"
                                            },
                                            "src": "17221:60:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 18968,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "17220:62:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 18969,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 21287,
                                      "src": "17220:83:66",
                                      "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": 18982,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17220:170:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "17207:183:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 18984,
                                "nodeType": "ExpressionStatement",
                                "src": "17207:183:66"
                              }
                            ]
                          }
                        },
                        "id": 18987,
                        "nodeType": "IfStatement",
                        "src": "16932:473:66",
                        "trueBody": {
                          "id": 18950,
                          "nodeType": "Block",
                          "src": "16984:159:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18948,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 18935,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18670,
                                    "src": "17053:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 18937,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 18936,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17061:1:66",
                                    "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": "17053:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 18946,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 18941,
                                                  "name": "params",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18696,
                                                  "src": "17089:6:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                                  }
                                                },
                                                "id": 18942,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "votersReputationLossRatio",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 17928,
                                                "src": "17089:32:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 18938,
                                                  "name": "voter",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18915,
                                                  "src": "17068:5:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                                                  }
                                                },
                                                "id": 18939,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "reputation",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 17941,
                                                "src": "17068:16:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 18940,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 21215,
                                              "src": "17068:20:66",
                                              "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": 18943,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17068:54:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 18944,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "17067:56:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "313030",
                                        "id": 18945,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17124:3:66",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_100_by_1",
                                          "typeString": "int_const 100"
                                        },
                                        "value": "100"
                                      },
                                      "src": "17067:60:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 18947,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "17066:62:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17053:75:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18949,
                              "nodeType": "ExpressionStatement",
                              "src": "17053:75:66"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18988,
                              "name": "voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18915,
                              "src": "17418:5:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Voter_$17944_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                              }
                            },
                            "id": 18990,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "reputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17941,
                            "src": "17418:16:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 18991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17437:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17418:20:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18993,
                        "nodeType": "ExpressionStatement",
                        "src": "17418:20:66"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 19014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 19006,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 18999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18996,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18673,
                                "src": "17485:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 18997,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "proposer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17961,
                              "src": "17485:17:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 18998,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18665,
                              "src": "17506:12:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "17485:33:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 19000,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "17484:35:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19004,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19001,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18673,
                                "src": "17522:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 19002,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17959,
                              "src": "17522:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 19003,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18099,
                              "src": "17546:3:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17522:27:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 19005,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "17521:29:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "17484:66:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 19012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19007,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18673,
                              "src": "17553:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19008,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "proposer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17961,
                            "src": "17553:17:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19010,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17582:1:66",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 19009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17574:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 19011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17574:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "17553:31:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19013,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "17552:33:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "17484:101:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19031,
                  "nodeType": "IfStatement",
                  "src": "17480:214:66",
                  "trueBody": {
                    "id": 19030,
                    "nodeType": "Block",
                    "src": "17587:107:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 19015,
                              "name": "rewards",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18670,
                              "src": "17601:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                "typeString": "uint256[3] memory"
                              }
                            },
                            "id": 19017,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 19016,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17609:1:66",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17601:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19018,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18696,
                              "src": "17614:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                "typeString": "struct GenesisProtocolLogic.Parameters memory"
                              }
                            },
                            "id": 19019,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "proposingRepReward",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17926,
                            "src": "17614:25:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17601:38:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19021,
                        "nodeType": "ExpressionStatement",
                        "src": "17601:38:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19022,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18673,
                              "src": "17653:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19024,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "proposer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17961,
                            "src": "17653:17:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19026,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17681:1:66",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 19025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17673:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 19027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17673:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "17653:30:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 19029,
                        "nodeType": "ExpressionStatement",
                        "src": "17653:30:66"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 19036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 19032,
                        "name": "rewards",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18670,
                        "src": "17707:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                          "typeString": "uint256[3] memory"
                        }
                      },
                      "id": 19034,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 19033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17715:1:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "17707:10:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 19035,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17721:1:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "17707:15:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19073,
                  "nodeType": "IfStatement",
                  "src": "17703:313:66",
                  "trueBody": {
                    "id": 19072,
                    "nodeType": "Block",
                    "src": "17724:292:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19037,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18673,
                              "src": "17738:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19039,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "totalStakes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17971,
                            "src": "17738:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 19043,
                                  "name": "rewards",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18670,
                                  "src": "17786:7:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                    "typeString": "uint256[3] memory"
                                  }
                                },
                                "id": 19045,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 19044,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17794:1:66",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17786:10:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19040,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18673,
                                  "src": "17761:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 19041,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalStakes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17971,
                                "src": "17761:20:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21263,
                              "src": "17761:24:66",
                              "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": 19046,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17761:36:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17738:59:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19048,
                        "nodeType": "ExpressionStatement",
                        "src": "17738:59:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 19052,
                                  "name": "_beneficiary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18665,
                                  "src": "17841:12:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 19053,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18670,
                                    "src": "17855:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 19055,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 19054,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17863:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "17855:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19050,
                                  "name": "stakingToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18103,
                                  "src": "17819:12:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$22137",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 19051,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22079,
                                "src": "17819:21:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 19056,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17819:47:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7472616e7366657220746f2062656e6566696369617279206661696c6564",
                              "id": 19057,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17868:32:66",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_01f9c28ec45391324b198ba689dab8ac93829b0379c464b3a8745b9a5d1be004",
                                "typeString": "literal_string \"transfer to beneficiary failed\""
                              },
                              "value": "transfer to beneficiary failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_01f9c28ec45391324b198ba689dab8ac93829b0379c464b3a8745b9a5d1be004",
                                "typeString": "literal_string \"transfer to beneficiary failed\""
                              }
                            ],
                            "id": 19049,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              22174,
                              22175
                            ],
                            "referencedDeclaration": 22175,
                            "src": "17811:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19058,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17811:90:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19059,
                        "nodeType": "ExpressionStatement",
                        "src": "17811:90:66"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19061,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18663,
                              "src": "17927:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 19062,
                                "name": "organizations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18086,
                                "src": "17940:13:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 19065,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19063,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18673,
                                  "src": "17954:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 19064,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "organizationId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17953,
                                "src": "17954:23:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17940:38:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19066,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18665,
                              "src": "17980:12:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 19067,
                                "name": "rewards",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18670,
                                "src": "17994:7:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                  "typeString": "uint256[3] memory"
                                }
                              },
                              "id": 19069,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19068,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18002:1:66",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17994:10:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19060,
                            "name": "Redeem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18024,
                            "src": "17920:6:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,address,uint256)"
                            }
                          },
                          "id": 19070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17920:85:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19071,
                        "nodeType": "EmitStatement",
                        "src": "17915:90:66"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 19083,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 19078,
                            "name": "rewards",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18670,
                            "src": "18044:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                              "typeString": "uint256[3] memory"
                            }
                          },
                          "id": 19080,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 19079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18052:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "18044:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 19074,
                            "name": "rewards",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18670,
                            "src": "18029:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                              "typeString": "uint256[3] memory"
                            }
                          },
                          "id": 19076,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 19075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18037:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "18029:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19077,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "18029:14:66",
                        "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": 19081,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18029:26:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 19082,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18059:1:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "18029:31:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19119,
                  "nodeType": "IfStatement",
                  "src": "18025:388:66",
                  "trueBody": {
                    "id": 19118,
                    "nodeType": "Block",
                    "src": "18062:351:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 19093,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18670,
                                    "src": "18171:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 19095,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 19094,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18179:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18171:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 19089,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18670,
                                    "src": "18156:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 19091,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 19090,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18164:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18156:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 19092,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21287,
                                "src": "18156:14:66",
                                "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": 19096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18156:26:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19097,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18665,
                              "src": "18184:12:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19098,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18663,
                              "src": "18198:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19085,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18673,
                                    "src": "18108:8:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 19086,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "callbacks",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17955,
                                  "src": "18108:18:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 19084,
                                "name": "VotingMachineCallbacksInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20647,
                                "src": "18076:31:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$20647_$",
                                  "typeString": "type(contract VotingMachineCallbacksInterface)"
                                }
                              },
                              "id": 19087,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18076:51:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$20647",
                                "typeString": "contract VotingMachineCallbacksInterface"
                              }
                            },
                            "id": 19088,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mintReputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20597,
                            "src": "18076:79:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (uint256,address,bytes32) external returns (bool)"
                            }
                          },
                          "id": 19099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18076:134:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19100,
                        "nodeType": "ExpressionStatement",
                        "src": "18076:134:66"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19102,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18663,
                              "src": "18259:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 19103,
                                "name": "organizations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18086,
                                "src": "18284:13:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 19106,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19104,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18673,
                                  "src": "18298:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 19105,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "organizationId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17953,
                                "src": "18298:23:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18284:38:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19107,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18665,
                              "src": "18336:12:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 19112,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18670,
                                    "src": "18377:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 19114,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 19113,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18385:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18377:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 19108,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18670,
                                    "src": "18362:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 19110,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 19109,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18370:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18362:10:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 19111,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21287,
                                "src": "18362:14:66",
                                "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": 19115,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18362:26:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19101,
                            "name": "RedeemReputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18044,
                            "src": "18229:16:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,address,uint256)"
                            }
                          },
                          "id": 19116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18229:173:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19117,
                        "nodeType": "EmitStatement",
                        "src": "18224:178:66"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev redeem a reward for a successful stake, vote or proposing.\nThe function use a beneficiary address as a parameter (and not msg.sender) to enable\nusers to redeem on behalf of someone else.\n@param _proposalId the ID of the proposal\n@param _beneficiary - the beneficiary address\n@return rewards -\n          [0] stakerTokenReward\n          [1] voterReputationReward\n          [2] proposerReputationReward",
            "id": 19121,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "redeem",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18666,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18663,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 19121,
                  "src": "14403:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18662,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14403:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18665,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 19121,
                  "src": "14424:20:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18664,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14424:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14402:43:66"
            },
            "returnParameters": {
              "id": 18671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18670,
                  "name": "rewards",
                  "nodeType": "VariableDeclaration",
                  "scope": 19121,
                  "src": "14462:22:66",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                    "typeString": "uint256[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 18667,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "14462:4:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 18669,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 18668,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14467:1:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "14462:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                      "typeString": "uint256[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14461:24:66"
            },
            "scope": 20436,
            "src": "14387:4032:66",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19258,
              "nodeType": "Block",
              "src": "19056:1256:66",
              "statements": [
                {
                  "assignments": [
                    19133
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19133,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 19258,
                      "src": "19066:25:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19132,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "19066:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19137,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 19134,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18078,
                      "src": "19094:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 19136,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 19135,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19123,
                      "src": "19104:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19094:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19066:50:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ProposalState_$17903",
                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                        },
                        "id": 19143,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19139,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19133,
                            "src": "19134:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 19140,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "state",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17957,
                          "src": "19134:14:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19141,
                            "name": "ProposalState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17903,
                            "src": "19152:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                              "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                            }
                          },
                          "id": 19142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Executed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "19152:22:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "src": "19134:40:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 19138,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22174,
                      "src": "19126:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 19144,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19126:49:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19145,
                  "nodeType": "ExpressionStatement",
                  "src": "19126:49:66"
                },
                {
                  "assignments": [
                    19147
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19147,
                      "name": "totalWinningStakes",
                      "nodeType": "VariableDeclaration",
                      "scope": 19258,
                      "src": "19185:26:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19146,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "19185:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19153,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19148,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19133,
                        "src": "19214:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 19149,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17997,
                      "src": "19214:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 19152,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19150,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19133,
                        "src": "19230:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 19151,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "winningVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17959,
                      "src": "19230:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19214:37:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19185:66:66"
                },
                {
                  "assignments": [
                    19155
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19155,
                      "name": "staker",
                      "nodeType": "VariableDeclaration",
                      "scope": 19258,
                      "src": "19261:21:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Staker"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19154,
                        "name": "Staker",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17951,
                        "src": "19261:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19160,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19156,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19133,
                        "src": "19285:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 19157,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18001,
                      "src": "19285:16:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$17951_storage_$",
                        "typeString": "mapping(address => struct GenesisProtocolLogic.Staker storage ref)"
                      }
                    },
                    "id": 19159,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 19158,
                      "name": "_beneficiary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19125,
                      "src": "19302:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19285:30:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$17951_storage",
                      "typeString": "struct GenesisProtocolLogic.Staker storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19261:54:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 19183,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 19178,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 19172,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19164,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19161,
                                  "name": "staker",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19155,
                                  "src": "19343:6:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                  }
                                },
                                "id": 19162,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount4Bounty",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17950,
                                "src": "19343:20:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19163,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "19366:1:66",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "19343:24:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 19165,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "19342:26:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19170,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19166,
                                  "name": "staker",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19155,
                                  "src": "19384:6:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                  }
                                },
                                "id": 19167,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "vote",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17946,
                                "src": "19384:11:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19168,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19133,
                                  "src": "19399:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 19169,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "winningVote",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17959,
                                "src": "19399:20:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "19384:35:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 19171,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "19383:37:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "19342:78:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19176,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19173,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19133,
                                "src": "19436:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 19174,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17959,
                              "src": "19436:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 19175,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18099,
                              "src": "19460:3:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "19436:27:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 19177,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "19435:29:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "19342:122:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19179,
                            "name": "totalWinningStakes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19147,
                            "src": "19480:18:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19502:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19480:23:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19182,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "19479:25:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "19342:162:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19196,
                  "nodeType": "IfStatement",
                  "src": "19325:318:66",
                  "trueBody": {
                    "id": 19195,
                    "nodeType": "Block",
                    "src": "19506:137:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19184,
                            "name": "potentialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19130,
                            "src": "19548:15:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19192,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 19189,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19185,
                                      "name": "staker",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19155,
                                      "src": "19567:6:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                      }
                                    },
                                    "id": 19186,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount4Bounty",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17950,
                                    "src": "19567:20:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19187,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19133,
                                      "src": "19590:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 19188,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "daoBounty",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17969,
                                    "src": "19590:18:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "19567:41:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 19190,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "19566:43:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 19191,
                              "name": "totalWinningStakes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19147,
                              "src": "19610:18:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "19566:62:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19548:80:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19194,
                        "nodeType": "ExpressionStatement",
                        "src": "19548:80:66"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 19212,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19197,
                            "name": "potentialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19130,
                            "src": "19657:15:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19198,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19676:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19657:20:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19200,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "19656:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19206,
                                "name": "stakingToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18103,
                                "src": "19781:12:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$22137",
                                  "typeString": "contract IERC20"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 19207,
                                "name": "_proposalId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19123,
                                "src": "19795:11:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$22137",
                                  "typeString": "contract IERC20"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19202,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19133,
                                      "src": "19726:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 19203,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "callbacks",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17955,
                                    "src": "19726:18:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 19201,
                                  "name": "VotingMachineCallbacksInterface",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20647,
                                  "src": "19694:31:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$20647_$",
                                    "typeString": "type(contract VotingMachineCallbacksInterface)"
                                  }
                                },
                                "id": 19204,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19694:51:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$20647",
                                  "typeString": "contract VotingMachineCallbacksInterface"
                                }
                              },
                              "id": 19205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOfStakingToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20646,
                              "src": "19694:86:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_contract$_IERC20_$22137_$_t_bytes32_$returns$_t_uint256_$",
                                "typeString": "function (contract IERC20,bytes32) view external returns (uint256)"
                              }
                            },
                            "id": 19208,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19694:113:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 19209,
                            "name": "potentialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19130,
                            "src": "19811:15:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19694:132:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19211,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "19693:134:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "19656:171:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19257,
                  "nodeType": "IfStatement",
                  "src": "19652:654:66",
                  "trueBody": {
                    "id": 19256,
                    "nodeType": "Block",
                    "src": "19829:477:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19213,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19155,
                              "src": "19843:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 19215,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount4Bounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17950,
                            "src": "19843:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19216,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19866:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19843:24:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19218,
                        "nodeType": "ExpressionStatement",
                        "src": "19843:24:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19219,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19133,
                              "src": "19881:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19221,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoBountyRemain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17967,
                            "src": "19881:24:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19225,
                                "name": "potentialAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19130,
                                "src": "19937:15:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19222,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19133,
                                  "src": "19908:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 19223,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "daoBountyRemain",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17967,
                                "src": "19908:24:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19224,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21263,
                              "src": "19908:28:66",
                              "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": 19226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19908:45:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19881:72:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19228,
                        "nodeType": "ExpressionStatement",
                        "src": "19881:72:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 19235,
                                  "name": "stakingToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18103,
                                  "src": "20074:12:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$22137",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 19236,
                                  "name": "_beneficiary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19125,
                                  "src": "20088:12:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 19237,
                                  "name": "potentialAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19130,
                                  "src": "20102:15:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 19238,
                                  "name": "_proposalId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19123,
                                  "src": "20119:11:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$22137",
                                    "typeString": "contract IERC20"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 19231,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19133,
                                        "src": "20020:8:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 19232,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "callbacks",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17955,
                                      "src": "20020:18:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 19230,
                                    "name": "VotingMachineCallbacksInterface",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20647,
                                    "src": "19988:31:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$20647_$",
                                      "typeString": "type(contract VotingMachineCallbacksInterface)"
                                    }
                                  },
                                  "id": 19233,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19988:51:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$20647",
                                    "typeString": "contract VotingMachineCallbacksInterface"
                                  }
                                },
                                "id": 19234,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "stakingTokenTransfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20621,
                                "src": "19988:85:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20_$22137_$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                                  "typeString": "function (contract IERC20,address,uint256,bytes32) external returns (bool)"
                                }
                              },
                              "id": 19239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19988:143:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 19229,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              22174,
                              22175
                            ],
                            "referencedDeclaration": 22174,
                            "src": "19967:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 19240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19967:165:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19241,
                        "nodeType": "ExpressionStatement",
                        "src": "19967:165:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19242,
                            "name": "redeemedAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19128,
                            "src": "20146:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 19243,
                            "name": "potentialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19130,
                            "src": "20163:15:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20146:32:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19245,
                        "nodeType": "ExpressionStatement",
                        "src": "20146:32:66"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19247,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19123,
                              "src": "20213:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 19248,
                                "name": "organizations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18086,
                                "src": "20226:13:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 19251,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19249,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19133,
                                  "src": "20240:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 19250,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "organizationId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17953,
                                "src": "20240:23:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "20226:38:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19252,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19125,
                              "src": "20266:12:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19253,
                              "name": "redeemedAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19128,
                              "src": "20280:14:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19246,
                            "name": "RedeemDaoBounty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18034,
                            "src": "20197:15:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,address,uint256)"
                            }
                          },
                          "id": 19254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20197:98:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19255,
                        "nodeType": "EmitStatement",
                        "src": "20192:103:66"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev redeemDaoBounty a reward for a successful stake.\nThe function use a beneficiary address as a parameter (and not msg.sender) to enable\nusers to redeem on behalf of someone else.\n@param _proposalId the ID of the proposal\n@param _beneficiary - the beneficiary address\n@return redeemedAmount - redeem token amount\n@return potentialAmount - potential redeem token amount(if there is enough tokens bounty at the organization )",
            "id": 19259,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "redeemDaoBounty",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19126,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19123,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 19259,
                  "src": "18941:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19122,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18941:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19125,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 19259,
                  "src": "18962:20:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19124,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18962:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18940:43:66"
            },
            "returnParameters": {
              "id": 19131,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19128,
                  "name": "redeemedAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 19259,
                  "src": "19007:22:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19127,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19007:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19130,
                  "name": "potentialAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 19259,
                  "src": "19031:23:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19129,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19031:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19006:49:66"
            },
            "scope": 20436,
            "src": "18916:1396:66",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19284,
              "nodeType": "Block",
              "src": "20566:162:66",
              "statements": [
                {
                  "assignments": [
                    19267
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19267,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 19284,
                      "src": "20576:24:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19266,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "20576:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19271,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 19268,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18078,
                      "src": "20603:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 19270,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 19269,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19261,
                      "src": "20613:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "20603:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20576:49:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 19281,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19273,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19261,
                              "src": "20650:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 19272,
                            "name": "_score",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20395,
                            "src": "20643:6:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32) view returns (uint256)"
                            }
                          },
                          "id": 19274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20643:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19276,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19267,
                                "src": "20675:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                }
                              },
                              "id": 19277,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "paramsHash",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17965,
                              "src": "20675:19:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19278,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19267,
                                "src": "20696:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                }
                              },
                              "id": 19279,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "organizationId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17953,
                              "src": "20696:23:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 19275,
                            "name": "threshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19324,
                            "src": "20665:9:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32,bytes32) view returns (uint256)"
                            }
                          },
                          "id": 19280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20665:55:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "20643:77:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 19282,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "20642:79:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19265,
                  "id": 19283,
                  "nodeType": "Return",
                  "src": "20635:86:66"
                }
              ]
            },
            "documentation": "@dev shouldBoost check if a proposal should be shifted to boosted phase.\n@param _proposalId the ID of the proposal\n@return bool true or false.",
            "id": 19285,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "shouldBoost",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19262,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19261,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 19285,
                  "src": "20519:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19260,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "20519:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20518:21:66"
            },
            "returnParameters": {
              "id": 19265,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19264,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 19285,
                  "src": "20560:4:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19263,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20560:4:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20559:6:66"
            },
            "scope": 20436,
            "src": "20498:230:66",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19323,
              "nodeType": "Block",
              "src": "21248:290:66",
              "statements": [
                {
                  "assignments": [
                    19295
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19295,
                      "name": "power",
                      "nodeType": "VariableDeclaration",
                      "scope": 19323,
                      "src": "21258:13:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19294,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "21258:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19299,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 19296,
                      "name": "orgBoostedProposalsCnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18082,
                      "src": "21274:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 19298,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 19297,
                      "name": "_organizationId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19289,
                      "src": "21297:15:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "21274:39:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21258:55:66"
                },
                {
                  "assignments": [
                    19301
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19301,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 19323,
                      "src": "21323:25:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19300,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17937,
                        "src": "21323:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19305,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 19302,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18074,
                      "src": "21351:10:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                      }
                    },
                    "id": 19304,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 19303,
                      "name": "_paramsHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19287,
                      "src": "21362:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "21351:23:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21323:51:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 19309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 19306,
                      "name": "power",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19295,
                      "src": "21389:5:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19307,
                        "name": "params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19301,
                        "src": "21397:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters storage pointer"
                        }
                      },
                      "id": 19308,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "limitExponentValue",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17922,
                      "src": "21397:25:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21389:33:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19316,
                  "nodeType": "IfStatement",
                  "src": "21385:97:66",
                  "trueBody": {
                    "id": 19315,
                    "nodeType": "Block",
                    "src": "21424:58:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 19310,
                            "name": "power",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19295,
                            "src": "21438:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19311,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19301,
                              "src": "21446:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Parameters storage pointer"
                              }
                            },
                            "id": 19312,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "limitExponentValue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17922,
                            "src": "21446:25:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21438:33:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19314,
                        "nodeType": "ExpressionStatement",
                        "src": "21438:33:66"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 19320,
                        "name": "power",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19295,
                        "src": "21525:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19317,
                          "name": "params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19301,
                          "src": "21499:6:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Parameters storage pointer"
                          }
                        },
                        "id": 19318,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "thresholdConst",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17920,
                        "src": "21499:21:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 19319,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "pow",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16500,
                      "src": "21499:25:66",
                      "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": 19321,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21499:32:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 19293,
                  "id": 19322,
                  "nodeType": "Return",
                  "src": "21492:39:66"
                }
              ]
            },
            "documentation": "@dev threshold return the organization's score threshold which required by\na proposal to shift to boosted state.\nThis threshold is dynamically set and it depend on the number of boosted proposal.\n@param _organizationId the organization identifier\n@param _paramsHash the organization parameters hash\n@return uint256 organization's score threshold as real number.",
            "id": 19324,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "threshold",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19290,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19287,
                  "name": "_paramsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 19324,
                  "src": "21173:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19286,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21173:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19289,
                  "name": "_organizationId",
                  "nodeType": "VariableDeclaration",
                  "scope": 19324,
                  "src": "21194:23:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19288,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21194:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21172:46:66"
            },
            "returnParameters": {
              "id": 19293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19292,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 19324,
                  "src": "21239:7:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19291,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21239:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21238:9:66"
            },
            "scope": 20436,
            "src": "21154:384:66",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19380,
              "nodeType": "Block",
              "src": "21823:571:66",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19341,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22043:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19343,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 19342,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22051:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22043:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19344,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22071:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19346,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 19345,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22079:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22071:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19347,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22099:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19349,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 19348,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22107:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22099:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19350,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22127:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19352,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "33",
                                      "id": 19351,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22135:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22127:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19353,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22155:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19355,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "34",
                                      "id": 19354,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22163:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22155:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19356,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22183:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19358,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "35",
                                      "id": 19357,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22191:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_5_by_1",
                                        "typeString": "int_const 5"
                                      },
                                      "value": "5"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22183:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19359,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22211:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19361,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "36",
                                      "id": 19360,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22219:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_6_by_1",
                                        "typeString": "int_const 6"
                                      },
                                      "value": "6"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22211:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19362,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22239:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19364,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "37",
                                      "id": 19363,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22247:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_7_by_1",
                                        "typeString": "int_const 7"
                                      },
                                      "value": "7"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22239:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19365,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22267:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19367,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "38",
                                      "id": 19366,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22275:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8_by_1",
                                        "typeString": "int_const 8"
                                      },
                                      "value": "8"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22267:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19368,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22295:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19370,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "39",
                                      "id": 19369,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22303:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_9_by_1",
                                        "typeString": "int_const 9"
                                      },
                                      "value": "9"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22295:10:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 19371,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19328,
                                      "src": "22323:7:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 19373,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3130",
                                      "id": 19372,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22331:2:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22323:11:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19339,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22158,
                                    "src": "22009:3:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 19340,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "22009:16:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 19374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22009:326:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 19338,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22165,
                              "src": "21986:9:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 19375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21986:363:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 19376,
                            "name": "_voteOnBehalf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19330,
                            "src": "22363:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 19336,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22158,
                            "src": "21956:3:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "21956:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 19377,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21956:430:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19335,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22165,
                      "src": "21933:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 19378,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21933:454:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 19334,
                  "id": 19379,
                  "nodeType": "Return",
                  "src": "21926:461:66"
                }
              ]
            },
            "documentation": "@dev hashParameters returns a hash of the given parameters",
            "id": 19381,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getParametersHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19331,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19328,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 19381,
                  "src": "21656:23:66",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                    "typeString": "uint256[11]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 19325,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "21656:4:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 19327,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "3131",
                      "id": 19326,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21661:2:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_11_by_1",
                        "typeString": "int_const 11"
                      },
                      "value": "11"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "21656:8:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$11_storage_ptr",
                      "typeString": "uint256[11]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19330,
                  "name": "_voteOnBehalf",
                  "nodeType": "VariableDeclaration",
                  "scope": 19381,
                  "src": "21734:21:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19329,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "21734:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21646:115:66"
            },
            "returnParameters": {
              "id": 19334,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19333,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 19381,
                  "src": "21806:7:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19332,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21806:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21805:9:66"
            },
            "scope": 20436,
            "src": "21620:774:66",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19884,
              "nodeType": "Block",
              "src": "22810:6329:66",
              "statements": [
                {
                  "assignments": [
                    19392
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19392,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 19884,
                      "src": "22820:25:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19391,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "22820:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19396,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 19393,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18078,
                      "src": "22848:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 19395,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 19394,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19383,
                      "src": "22858:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "22848:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22820:50:66"
                },
                {
                  "assignments": [
                    19398
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19398,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 19884,
                      "src": "22880:24:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19397,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17937,
                        "src": "22880:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19403,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 19399,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18074,
                      "src": "22907:10:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                      }
                    },
                    "id": 19402,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19400,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19392,
                        "src": "22918:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 19401,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17965,
                      "src": "22918:19:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "22907:31:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22880:58:66"
                },
                {
                  "assignments": [
                    19405
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19405,
                      "name": "tmpProposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 19884,
                      "src": "22948:27:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19404,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "22948:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19407,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 19406,
                    "name": "proposal",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19392,
                    "src": "22978:8:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22948:38:66"
                },
                {
                  "assignments": [
                    19409
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19409,
                      "name": "totalReputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 19884,
                      "src": "22996:23:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19408,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "22996:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19417,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 19415,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19383,
                        "src": "23107:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19411,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "23062:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19412,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "callbacks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17955,
                            "src": "23062:18:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 19410,
                          "name": "VotingMachineCallbacksInterface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20647,
                          "src": "23030:31:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$20647_$",
                            "typeString": "type(contract VotingMachineCallbacksInterface)"
                          }
                        },
                        "id": 19413,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23030:51:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$20647",
                          "typeString": "contract VotingMachineCallbacksInterface"
                        }
                      },
                      "id": 19414,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTotalReputationSupply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 20628,
                      "src": "23030:76:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) view external returns (uint256)"
                      }
                    },
                    "id": 19416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23030:89:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22996:123:66"
                },
                {
                  "assignments": [
                    19419
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19419,
                      "name": "executionBar",
                      "nodeType": "VariableDeclaration",
                      "scope": 19884,
                      "src": "23179:20:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19418,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "23179:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19427,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 19426,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19420,
                            "name": "totalReputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19409,
                            "src": "23203:15:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 19421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23219:3:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "23203:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 19423,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "23202:21:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19424,
                        "name": "params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19398,
                        "src": "23226:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters memory"
                        }
                      },
                      "id": 19425,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "queuedVoteRequiredPercentage",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17912,
                      "src": "23226:35:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23202:59:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23179:82:66"
                },
                {
                  "assignments": [
                    19429
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19429,
                      "name": "executionState",
                      "nodeType": "VariableDeclaration",
                      "scope": 19884,
                      "src": "23271:29:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ExecutionState_$17910",
                        "typeString": "enum GenesisProtocolLogic.ExecutionState"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19428,
                        "name": "ExecutionState",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17910,
                        "src": "23271:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ExecutionState_$17910",
                          "typeString": "enum GenesisProtocolLogic.ExecutionState"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19432,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 19430,
                      "name": "ExecutionState",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17910,
                      "src": "23303:14:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                        "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                      }
                    },
                    "id": 19431,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "None",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "23303:19:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ExecutionState_$17910",
                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23271:51:66"
                },
                {
                  "assignments": [
                    19434
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19434,
                      "name": "averageDownstakesOfBoosted",
                      "nodeType": "VariableDeclaration",
                      "scope": 19884,
                      "src": "23332:34:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19433,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "23332:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19435,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23332:34:66"
                },
                {
                  "assignments": [
                    19437
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19437,
                      "name": "confidenceThreshold",
                      "nodeType": "VariableDeclaration",
                      "scope": 19884,
                      "src": "23376:27:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19436,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "23376:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19438,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23376:27:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 19445,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19439,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19392,
                          "src": "23418:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 19440,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17985,
                        "src": "23418:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 19443,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 19441,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19392,
                          "src": "23433:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 19442,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "winningVote",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17959,
                        "src": "23433:20:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "23418:36:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 19444,
                      "name": "executionBar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19419,
                      "src": "23457:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23418:51:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 19709,
                    "nodeType": "Block",
                    "src": "23966:3135:66",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 19488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19484,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "23984:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19485,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "23984:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19486,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "24002:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 19487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Queued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "24002:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "23984:38:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 19558,
                        "nodeType": "IfStatement",
                        "src": "23980:944:66",
                        "trueBody": {
                          "id": 19557,
                          "nodeType": "Block",
                          "src": "24024:900:66",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19498,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19494,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 19489,
                                        "name": "now",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22173,
                                        "src": "24109:3:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19490,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19392,
                                            "src": "24115:8:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 19491,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "times",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17979,
                                          "src": "24115:14:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                            "typeString": "uint256[3] storage ref"
                                          }
                                        },
                                        "id": 19493,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 19492,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "24130:1:66",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "24115:17:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24109:23:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 19495,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "24108:25:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19496,
                                    "name": "params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19398,
                                    "src": "24137:6:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                    }
                                  },
                                  "id": 19497,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "queuedVotePeriodLimit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17914,
                                  "src": "24137:28:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24108:57:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 19555,
                                "nodeType": "Block",
                                "src": "24372:538:66",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19525,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 19518,
                                        "name": "confidenceThreshold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19437,
                                        "src": "24394:19:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 19520,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19392,
                                              "src": "24426:8:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 19521,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "paramsHash",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17965,
                                            "src": "24426:19:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 19522,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19392,
                                              "src": "24447:8:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 19523,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "organizationId",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17953,
                                            "src": "24447:23:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 19519,
                                          "name": "threshold",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19324,
                                          "src": "24416:9:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                                            "typeString": "function (bytes32,bytes32) view returns (uint256)"
                                          }
                                        },
                                        "id": 19524,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "24416:55:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24394:77:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 19526,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24394:77:66"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19531,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 19528,
                                            "name": "_proposalId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19383,
                                            "src": "24504:11:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 19527,
                                          "name": "_score",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20395,
                                          "src": "24497:6:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                            "typeString": "function (bytes32) view returns (uint256)"
                                          }
                                        },
                                        "id": 19529,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "24497:19:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 19530,
                                        "name": "confidenceThreshold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19437,
                                        "src": "24519:19:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24497:41:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 19554,
                                    "nodeType": "IfStatement",
                                    "src": "24493:399:66",
                                    "trueBody": {
                                      "id": 19553,
                                      "nodeType": "Block",
                                      "src": "24540:352:66",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19537,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19532,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 19392,
                                                "src": "24633:8:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 19534,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "state",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 17957,
                                              "src": "24633:14:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19535,
                                                "name": "ProposalState",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 17903,
                                                "src": "24650:13:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                                }
                                              },
                                              "id": 19536,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "PreBoosted",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "24650:24:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "src": "24633:41:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                                            }
                                          },
                                          "id": 19538,
                                          "nodeType": "ExpressionStatement",
                                          "src": "24633:41:66"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19545,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19539,
                                                  "name": "proposal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19392,
                                                  "src": "24770:8:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                  }
                                                },
                                                "id": 19542,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "times",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 17979,
                                                "src": "24770:14:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                                  "typeString": "uint256[3] storage ref"
                                                }
                                              },
                                              "id": 19543,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "32",
                                                "id": 19541,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "24785:1:66",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_2_by_1",
                                                  "typeString": "int_const 2"
                                                },
                                                "value": "2"
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "24770:17:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "id": 19544,
                                              "name": "now",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22173,
                                              "src": "24790:3:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "24770:23:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 19546,
                                          "nodeType": "ExpressionStatement",
                                          "src": "24770:23:66"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19551,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19547,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 19392,
                                                "src": "24819:8:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 19549,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "confidenceThreshold",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 17973,
                                              "src": "24819:28:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "id": 19550,
                                              "name": "confidenceThreshold",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19437,
                                              "src": "24850:19:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "24819:50:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 19552,
                                          "nodeType": "ExpressionStatement",
                                          "src": "24819:50:66"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 19556,
                              "nodeType": "IfStatement",
                              "src": "24104:806:66",
                              "trueBody": {
                                "id": 19517,
                                "nodeType": "Block",
                                "src": "24167:199:66",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19504,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 19499,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19392,
                                          "src": "24189:8:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 19501,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "state",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17957,
                                        "src": "24189:14:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$17903",
                                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 19502,
                                          "name": "ProposalState",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17903,
                                          "src": "24206:13:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                            "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                          }
                                        },
                                        "id": 19503,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "ExpiredInQueue",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "24206:28:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$17903",
                                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                                        }
                                      },
                                      "src": "24189:45:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "id": 19505,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24189:45:66"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19510,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 19506,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19392,
                                          "src": "24256:8:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 19508,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "winningVote",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17959,
                                        "src": "24256:20:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 19509,
                                        "name": "NO",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18096,
                                        "src": "24279:2:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24256:25:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 19511,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24256:25:66"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19515,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 19512,
                                        "name": "executionState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19429,
                                        "src": "24303:14:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                          "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 19513,
                                          "name": "ExecutionState",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17910,
                                          "src": "24320:14:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                                            "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                          }
                                        },
                                        "id": 19514,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "QueueTimeOut",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "24320:27:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                          "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                        }
                                      },
                                      "src": "24303:44:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                        "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                      }
                                    },
                                    "id": 19516,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24303:44:66"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 19563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19559,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "24942:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19560,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "24942:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19561,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "24960:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 19562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PreBoosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "24960:24:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "24942:42:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 19708,
                        "nodeType": "IfStatement",
                        "src": "24938:2153:66",
                        "trueBody": {
                          "id": 19707,
                          "nodeType": "Block",
                          "src": "24986:2105:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 19571,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 19564,
                                  "name": "confidenceThreshold",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19437,
                                  "src": "25004:19:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 19566,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19392,
                                        "src": "25036:8:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 19567,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "paramsHash",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17965,
                                      "src": "25036:19:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 19568,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19392,
                                        "src": "25057:8:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 19569,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "organizationId",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17953,
                                      "src": "25057:23:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 19565,
                                    "name": "threshold",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19324,
                                    "src": "25026:9:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                                      "typeString": "function (bytes32,bytes32) view returns (uint256)"
                                    }
                                  },
                                  "id": 19570,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25026:55:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25004:77:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19572,
                              "nodeType": "ExpressionStatement",
                              "src": "25004:77:66"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19578,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 19573,
                                        "name": "now",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22173,
                                        "src": "25164:3:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19574,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19392,
                                            "src": "25170:8:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 19575,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "times",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17979,
                                          "src": "25170:14:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                            "typeString": "uint256[3] storage ref"
                                          }
                                        },
                                        "id": 19577,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "32",
                                          "id": 19576,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "25185:1:66",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "25170:17:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25164:23:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 19579,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "25163:25:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19580,
                                    "name": "params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19398,
                                    "src": "25192:6:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                    }
                                  },
                                  "id": 19581,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "preBoostedVotePeriodLimit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17918,
                                  "src": "25192:32:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25163:61:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 19705,
                                "nodeType": "Block",
                                "src": "26530:547:66",
                                "statements": [
                                  {
                                    "assignments": [
                                      19667
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 19667,
                                        "name": "proposalScore",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 19705,
                                        "src": "26591:21:66",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 19666,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "26591:7:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 19671,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 19669,
                                          "name": "_proposalId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19383,
                                          "src": "26622:11:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 19668,
                                        "name": "_score",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20395,
                                        "src": "26615:6:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                          "typeString": "function (bytes32) view returns (uint256)"
                                        }
                                      },
                                      "id": 19670,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26615:19:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "26591:43:66"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19678,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 19672,
                                        "name": "proposalScore",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19667,
                                        "src": "26660:13:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 19676,
                                            "name": "confidenceThreshold",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19437,
                                            "src": "26710:19:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 19673,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19392,
                                              "src": "26677:8:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 19674,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "confidenceThreshold",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17973,
                                            "src": "26677:28:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 19675,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "min",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 21147,
                                          "src": "26677:32:66",
                                          "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": 19677,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "26677:53:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "26660:70:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "condition": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 19690,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19687,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19392,
                                            "src": "26828:8:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 19688,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "confidenceThreshold",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17973,
                                          "src": "26828:28:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 19689,
                                          "name": "proposalScore",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19667,
                                          "src": "26859:13:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "26828:44:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": null,
                                      "id": 19703,
                                      "nodeType": "IfStatement",
                                      "src": "26824:235:66",
                                      "trueBody": {
                                        "id": 19702,
                                        "nodeType": "Block",
                                        "src": "26874:185:66",
                                        "statements": [
                                          {
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 19695,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19691,
                                                  "name": "proposal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19392,
                                                  "src": "26900:8:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                  }
                                                },
                                                "id": 19693,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "memberName": "confidenceThreshold",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 17973,
                                                "src": "26900:28:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "argumentTypes": null,
                                                "id": 19694,
                                                "name": "confidenceThreshold",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 19437,
                                                "src": "26931:19:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "26900:50:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 19696,
                                            "nodeType": "ExpressionStatement",
                                            "src": "26900:50:66"
                                          },
                                          {
                                            "eventCall": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 19698,
                                                  "name": "_proposalId",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19383,
                                                  "src": "27003:11:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "id": 19699,
                                                  "name": "confidenceThreshold",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19437,
                                                  "src": "27016:19:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "id": 19697,
                                                "name": "ConfidenceLevelChange",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18070,
                                                "src": "26981:21:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                                                  "typeString": "function (bytes32,uint256)"
                                                }
                                              },
                                              "id": 19700,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "26981:55:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$__$",
                                                "typeString": "tuple()"
                                              }
                                            },
                                            "id": 19701,
                                            "nodeType": "EmitStatement",
                                            "src": "26976:60:66"
                                          }
                                        ]
                                      }
                                    },
                                    "id": 19704,
                                    "nodeType": "IfStatement",
                                    "src": "26656:403:66",
                                    "trueBody": {
                                      "id": 19686,
                                      "nodeType": "Block",
                                      "src": "26732:86:66",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19684,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19679,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 19392,
                                                "src": "26758:8:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 19681,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "state",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 17957,
                                              "src": "26758:14:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19682,
                                                "name": "ProposalState",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 17903,
                                                "src": "26775:13:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                                }
                                              },
                                              "id": 19683,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "Queued",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "26775:20:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "src": "26758:37:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                                            }
                                          },
                                          "id": 19685,
                                          "nodeType": "ExpressionStatement",
                                          "src": "26758:37:66"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 19706,
                              "nodeType": "IfStatement",
                              "src": "25159:1918:66",
                              "trueBody": {
                                "id": 19665,
                                "nodeType": "Block",
                                "src": "25226:1298:66",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19587,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 19584,
                                            "name": "_proposalId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19383,
                                            "src": "25259:11:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 19583,
                                          "name": "_score",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20395,
                                          "src": "25252:6:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                            "typeString": "function (bytes32) view returns (uint256)"
                                          }
                                        },
                                        "id": 19585,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "25252:19:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 19586,
                                        "name": "confidenceThreshold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19437,
                                        "src": "25274:19:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25252:41:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 19663,
                                      "nodeType": "Block",
                                      "src": "26420:86:66",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19661,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19656,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 19392,
                                                "src": "26446:8:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 19658,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "state",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 17957,
                                              "src": "26446:14:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19659,
                                                "name": "ProposalState",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 17903,
                                                "src": "26463:13:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                                }
                                              },
                                              "id": 19660,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "Queued",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "26463:20:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "src": "26446:37:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                                            }
                                          },
                                          "id": 19662,
                                          "nodeType": "ExpressionStatement",
                                          "src": "26446:37:66"
                                        }
                                      ]
                                    },
                                    "id": 19664,
                                    "nodeType": "IfStatement",
                                    "src": "25248:1258:66",
                                    "trueBody": {
                                      "id": 19655,
                                      "nodeType": "Block",
                                      "src": "25295:1119:66",
                                      "statements": [
                                        {
                                          "condition": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 19593,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 19588,
                                                "name": "orgBoostedProposalsCnt",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18082,
                                                "src": "25325:22:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                  "typeString": "mapping(bytes32 => uint256)"
                                                }
                                              },
                                              "id": 19591,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19589,
                                                  "name": "proposal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19392,
                                                  "src": "25348:8:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                  }
                                                },
                                                "id": 19590,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "organizationId",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 17953,
                                                "src": "25348:23:66",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "25325:47:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 19592,
                                              "name": "MAX_BOOSTED_PROPOSALS",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18109,
                                              "src": "25375:21:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "25325:71:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseBody": null,
                                          "id": 19654,
                                          "nodeType": "IfStatement",
                                          "src": "25321:1071:66",
                                          "trueBody": {
                                            "id": 19653,
                                            "nodeType": "Block",
                                            "src": "25398:994:66",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19599,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 19594,
                                                      "name": "proposal",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 19392,
                                                      "src": "25493:8:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                      }
                                                    },
                                                    "id": 19596,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "memberName": "state",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 17957,
                                                    "src": "25493:14:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 19597,
                                                      "name": "ProposalState",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 17903,
                                                      "src": "25510:13:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                                        "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                                      }
                                                    },
                                                    "id": 19598,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberName": "Boosted",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": null,
                                                    "src": "25510:21:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                                    }
                                                  },
                                                  "src": "25493:38:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                                  }
                                                },
                                                "id": 19600,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25493:38:66"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19607,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 19601,
                                                        "name": "proposal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 19392,
                                                        "src": "25632:8:66",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                        }
                                                      },
                                                      "id": 19604,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "times",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 17979,
                                                      "src": "25632:14:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                                        "typeString": "uint256[3] storage ref"
                                                      }
                                                    },
                                                    "id": 19605,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "hexValue": "31",
                                                      "id": 19603,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "25647:1:66",
                                                      "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": "25632:17:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "id": 19606,
                                                    "name": "now",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 22173,
                                                    "src": "25652:3:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "25632:23:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 19608,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25632:23:66"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19613,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "UnaryOperation",
                                                  "operator": "++",
                                                  "prefix": false,
                                                  "src": "25685:49:66",
                                                  "subExpression": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 19609,
                                                      "name": "orgBoostedProposalsCnt",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 18082,
                                                      "src": "25685:22:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                        "typeString": "mapping(bytes32 => uint256)"
                                                      }
                                                    },
                                                    "id": 19612,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 19610,
                                                        "name": "proposal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 19392,
                                                        "src": "25708:8:66",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                        }
                                                      },
                                                      "id": 19611,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "organizationId",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 17953,
                                                      "src": "25708:23:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "25685:47:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 19614,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25685:49:66"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19620,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "id": 19615,
                                                    "name": "averageDownstakesOfBoosted",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 19434,
                                                    "src": "25868:26:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 19616,
                                                      "name": "averagesDownstakesOfBoosted",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 18090,
                                                      "src": "25897:27:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                        "typeString": "mapping(bytes32 => uint256)"
                                                      }
                                                    },
                                                    "id": 19619,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 19617,
                                                        "name": "proposal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 19392,
                                                        "src": "25925:8:66",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                        }
                                                      },
                                                      "id": 19618,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "organizationId",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 17953,
                                                      "src": "25925:23:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "25897:52:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "25868:81:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 19621,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25868:81:66"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19651,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 19622,
                                                      "name": "averagesDownstakesOfBoosted",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 18090,
                                                      "src": "26045:27:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                        "typeString": "mapping(bytes32 => uint256)"
                                                      }
                                                    },
                                                    "id": 19625,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 19623,
                                                        "name": "proposal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 19392,
                                                        "src": "26073:8:66",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                        }
                                                      },
                                                      "id": 19624,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "organizationId",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 17953,
                                                      "src": "26073:23:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "26045:52:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "commonType": {
                                                          "typeIdentifier": "t_int256",
                                                          "typeString": "int256"
                                                        },
                                                        "id": 19649,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "argumentTypes": null,
                                                          "arguments": [
                                                            {
                                                              "argumentTypes": null,
                                                              "id": 19628,
                                                              "name": "averageDownstakesOfBoosted",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 19434,
                                                              "src": "26147:26:66",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            ],
                                                            "id": 19627,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "26140:6:66",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_type$_t_int256_$",
                                                              "typeString": "type(int256)"
                                                            },
                                                            "typeName": "int256"
                                                          },
                                                          "id": 19629,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "typeConversion",
                                                          "lValueRequested": false,
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "26140:34:66",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "+",
                                                        "rightExpression": {
                                                          "argumentTypes": null,
                                                          "components": [
                                                            {
                                                              "argumentTypes": null,
                                                              "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                              },
                                                              "id": 19647,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "leftExpression": {
                                                                "argumentTypes": null,
                                                                "components": [
                                                                  {
                                                                    "argumentTypes": null,
                                                                    "commonType": {
                                                                      "typeIdentifier": "t_int256",
                                                                      "typeString": "int256"
                                                                    },
                                                                    "id": 19639,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                      "argumentTypes": null,
                                                                      "arguments": [
                                                                        {
                                                                          "argumentTypes": null,
                                                                          "baseExpression": {
                                                                            "argumentTypes": null,
                                                                            "expression": {
                                                                              "argumentTypes": null,
                                                                              "id": 19631,
                                                                              "name": "proposal",
                                                                              "nodeType": "Identifier",
                                                                              "overloadedDeclarations": [],
                                                                              "referencedDeclaration": 19392,
                                                                              "src": "26218:8:66",
                                                                              "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                                              }
                                                                            },
                                                                            "id": 19632,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "stakes",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 17997,
                                                                            "src": "26218:15:66",
                                                                            "typeDescriptions": {
                                                                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                                              "typeString": "mapping(uint256 => uint256)"
                                                                            }
                                                                          },
                                                                          "id": 19634,
                                                                          "indexExpression": {
                                                                            "argumentTypes": null,
                                                                            "id": 19633,
                                                                            "name": "NO",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 18096,
                                                                            "src": "26234:2:66",
                                                                            "typeDescriptions": {
                                                                              "typeIdentifier": "t_uint256",
                                                                              "typeString": "uint256"
                                                                            }
                                                                          },
                                                                          "isConstant": false,
                                                                          "isLValue": true,
                                                                          "isPure": false,
                                                                          "lValueRequested": false,
                                                                          "nodeType": "IndexAccess",
                                                                          "src": "26218:19:66",
                                                                          "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          }
                                                                        }
                                                                      ],
                                                                      "expression": {
                                                                        "argumentTypes": [
                                                                          {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          }
                                                                        ],
                                                                        "id": 19630,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "26211:6:66",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_type$_t_int256_$",
                                                                          "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": "int256"
                                                                      },
                                                                      "id": 19635,
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": false,
                                                                      "kind": "typeConversion",
                                                                      "lValueRequested": false,
                                                                      "names": [],
                                                                      "nodeType": "FunctionCall",
                                                                      "src": "26211:27:66",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                      }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "-",
                                                                    "rightExpression": {
                                                                      "argumentTypes": null,
                                                                      "arguments": [
                                                                        {
                                                                          "argumentTypes": null,
                                                                          "id": 19637,
                                                                          "name": "averageDownstakesOfBoosted",
                                                                          "nodeType": "Identifier",
                                                                          "overloadedDeclarations": [],
                                                                          "referencedDeclaration": 19434,
                                                                          "src": "26246:26:66",
                                                                          "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          }
                                                                        }
                                                                      ],
                                                                      "expression": {
                                                                        "argumentTypes": [
                                                                          {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          }
                                                                        ],
                                                                        "id": 19636,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "26239:6:66",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_type$_t_int256_$",
                                                                          "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": "int256"
                                                                      },
                                                                      "id": 19638,
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": false,
                                                                      "kind": "typeConversion",
                                                                      "lValueRequested": false,
                                                                      "names": [],
                                                                      "nodeType": "FunctionCall",
                                                                      "src": "26239:34:66",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                      }
                                                                    },
                                                                    "src": "26211:62:66",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_int256",
                                                                      "typeString": "int256"
                                                                    }
                                                                  }
                                                                ],
                                                                "id": 19640,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "26210:64:66",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_int256",
                                                                  "typeString": "int256"
                                                                }
                                                              },
                                                              "nodeType": "BinaryOperation",
                                                              "operator": "/",
                                                              "rightExpression": {
                                                                "argumentTypes": null,
                                                                "arguments": [
                                                                  {
                                                                    "argumentTypes": null,
                                                                    "baseExpression": {
                                                                      "argumentTypes": null,
                                                                      "id": 19642,
                                                                      "name": "orgBoostedProposalsCnt",
                                                                      "nodeType": "Identifier",
                                                                      "overloadedDeclarations": [],
                                                                      "referencedDeclaration": 18082,
                                                                      "src": "26315:22:66",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                                        "typeString": "mapping(bytes32 => uint256)"
                                                                      }
                                                                    },
                                                                    "id": 19645,
                                                                    "indexExpression": {
                                                                      "argumentTypes": null,
                                                                      "expression": {
                                                                        "argumentTypes": null,
                                                                        "id": 19643,
                                                                        "name": "proposal",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 19392,
                                                                        "src": "26338:8:66",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                                        }
                                                                      },
                                                                      "id": 19644,
                                                                      "isConstant": false,
                                                                      "isLValue": true,
                                                                      "isPure": false,
                                                                      "lValueRequested": false,
                                                                      "memberName": "organizationId",
                                                                      "nodeType": "MemberAccess",
                                                                      "referencedDeclaration": 17953,
                                                                      "src": "26338:23:66",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                      }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "26315:47:66",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    }
                                                                  }
                                                                ],
                                                                "expression": {
                                                                  "argumentTypes": [
                                                                    {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    }
                                                                  ],
                                                                  "id": 19641,
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": true,
                                                                  "lValueRequested": false,
                                                                  "nodeType": "ElementaryTypeNameExpression",
                                                                  "src": "26308:6:66",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                    "typeString": "type(int256)"
                                                                  },
                                                                  "typeName": "int256"
                                                                },
                                                                "id": 19646,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "26308:55:66",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_int256",
                                                                  "typeString": "int256"
                                                                }
                                                              },
                                                              "src": "26210:153:66",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                              }
                                                            }
                                                          ],
                                                          "id": 19648,
                                                          "isConstant": false,
                                                          "isInlineArray": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "nodeType": "TupleExpression",
                                                          "src": "26209:155:66",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                          }
                                                        },
                                                        "src": "26140:224:66",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_int256",
                                                          "typeString": "int256"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_int256",
                                                          "typeString": "int256"
                                                        }
                                                      ],
                                                      "id": 19626,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "nodeType": "ElementaryTypeNameExpression",
                                                      "src": "26132:7:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_uint256_$",
                                                        "typeString": "type(uint256)"
                                                      },
                                                      "typeName": "uint256"
                                                    },
                                                    "id": 19650,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "26132:233:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "26045:320:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 19652,
                                                "nodeType": "ExpressionStatement",
                                                "src": "26045:320:66"
                                              }
                                            ]
                                          }
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 19710,
                  "nodeType": "IfStatement",
                  "src": "23414:3687:66",
                  "trueBody": {
                    "id": 19483,
                    "nodeType": "Block",
                    "src": "23471:489:66",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 19450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19446,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "23550:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19447,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "23550:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19448,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "23568:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 19449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Queued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "23568:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "23550:38:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            },
                            "id": 19461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19457,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19392,
                                "src": "23680:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 19458,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "state",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17957,
                              "src": "23680:14:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19459,
                                "name": "ProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17903,
                                "src": "23698:13:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                }
                              },
                              "id": 19460,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "PreBoosted",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "23698:24:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            },
                            "src": "23680:42:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 19473,
                            "nodeType": "Block",
                            "src": "23815:82:66",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 19468,
                                    "name": "executionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19429,
                                    "src": "23833:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19469,
                                      "name": "ExecutionState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17910,
                                      "src": "23850:14:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                                        "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                      }
                                    },
                                    "id": 19470,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "BoostedBarCrossed",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "23850:32:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                    }
                                  },
                                  "src": "23833:49:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "id": 19472,
                                "nodeType": "ExpressionStatement",
                                "src": "23833:49:66"
                              }
                            ]
                          },
                          "id": 19474,
                          "nodeType": "IfStatement",
                          "src": "23676:221:66",
                          "trueBody": {
                            "id": 19467,
                            "nodeType": "Block",
                            "src": "23724:85:66",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19465,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 19462,
                                    "name": "executionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19429,
                                    "src": "23742:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19463,
                                      "name": "ExecutionState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17910,
                                      "src": "23759:14:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                                        "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                      }
                                    },
                                    "id": 19464,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "PreBoostedBarCrossed",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "23759:35:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                    }
                                  },
                                  "src": "23742:52:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "id": 19466,
                                "nodeType": "ExpressionStatement",
                                "src": "23742:52:66"
                              }
                            ]
                          }
                        },
                        "id": 19475,
                        "nodeType": "IfStatement",
                        "src": "23546:351:66",
                        "trueBody": {
                          "id": 19456,
                          "nodeType": "Block",
                          "src": "23590:80:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 19454,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 19451,
                                  "name": "executionState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19429,
                                  "src": "23608:14:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19452,
                                    "name": "ExecutionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17910,
                                    "src": "23625:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                    }
                                  },
                                  "id": 19453,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "QueueBarCrossed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "23625:30:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "src": "23608:47:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                  "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                }
                              },
                              "id": 19455,
                              "nodeType": "ExpressionStatement",
                              "src": "23608:47:66"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19476,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "23910:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19478,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "23910:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19479,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "23927:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 19480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Executed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "23927:22:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "23910:39:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "id": 19482,
                        "nodeType": "ExpressionStatement",
                        "src": "23910:39:66"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 19723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 19715,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19711,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "27116:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19712,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "27116:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19713,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "27134:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 19714,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Boosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "27134:21:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "27116:39:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19716,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "27115:41:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 19721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19717,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "27173:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19718,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "27173:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19719,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "27191:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 19720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "QuietEndingPeriod",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "27191:31:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "27173:49:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19722,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "27172:51:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "27115:108:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19749,
                  "nodeType": "IfStatement",
                  "src": "27111:405:66",
                  "trueBody": {
                    "id": 19748,
                    "nodeType": "Block",
                    "src": "27225:291:66",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19733,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19729,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 19724,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22173,
                                  "src": "27302:3:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19725,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19392,
                                      "src": "27308:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 19726,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "times",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17979,
                                    "src": "27308:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                      "typeString": "uint256[3] storage ref"
                                    }
                                  },
                                  "id": 19728,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 19727,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27323:1:66",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "27308:17:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "27302:23:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 19730,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "27301:25:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19731,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "27330:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19732,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "currentBoostedVotePeriodLimit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17963,
                            "src": "27330:38:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "27301:67:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 19747,
                        "nodeType": "IfStatement",
                        "src": "27297:209:66",
                        "trueBody": {
                          "id": 19746,
                          "nodeType": "Block",
                          "src": "27370:136:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 19739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19734,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19392,
                                    "src": "27388:8:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 19736,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "state",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17957,
                                  "src": "27388:14:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19737,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17903,
                                    "src": "27405:13:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                    }
                                  },
                                  "id": 19738,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Executed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "27405:22:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "src": "27388:39:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "id": 19740,
                              "nodeType": "ExpressionStatement",
                              "src": "27388:39:66"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 19744,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 19741,
                                  "name": "executionState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19429,
                                  "src": "27445:14:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19742,
                                    "name": "ExecutionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17910,
                                    "src": "27462:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                    }
                                  },
                                  "id": 19743,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "BoostedTimeOut",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "27462:29:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "src": "27445:46:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                  "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                }
                              },
                              "id": 19745,
                              "nodeType": "ExpressionStatement",
                              "src": "27445:46:66"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ExecutionState_$17910",
                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                    },
                    "id": 19753,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 19750,
                      "name": "executionState",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19429,
                      "src": "27530:14:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ExecutionState_$17910",
                        "typeString": "enum GenesisProtocolLogic.ExecutionState"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19751,
                        "name": "ExecutionState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17910,
                        "src": "27548:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                          "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                        }
                      },
                      "id": 19752,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "None",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "27548:19:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ExecutionState_$17910",
                        "typeString": "enum GenesisProtocolLogic.ExecutionState"
                      }
                    },
                    "src": "27530:37:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19864,
                  "nodeType": "IfStatement",
                  "src": "27526:1431:66",
                  "trueBody": {
                    "id": 19863,
                    "nodeType": "Block",
                    "src": "27569:1388:66",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 19764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                  "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                },
                                "id": 19757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 19754,
                                  "name": "executionState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19429,
                                  "src": "27588:14:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19755,
                                    "name": "ExecutionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17910,
                                    "src": "27606:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                    }
                                  },
                                  "id": 19756,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "BoostedTimeOut",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "27606:29:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "src": "27588:47:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 19758,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "27587:49:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                  "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                },
                                "id": 19762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 19759,
                                  "name": "executionState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19429,
                                  "src": "27657:14:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19760,
                                    "name": "ExecutionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17910,
                                    "src": "27675:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                    }
                                  },
                                  "id": 19761,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "BoostedBarCrossed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "27675:32:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "src": "27657:50:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 19763,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "27656:52:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "27587:121:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 19827,
                        "nodeType": "IfStatement",
                        "src": "27583:938:66",
                        "trueBody": {
                          "id": 19826,
                          "nodeType": "Block",
                          "src": "27710:811:66",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 19776,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 19765,
                                    "name": "orgBoostedProposalsCnt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18082,
                                    "src": "27728:22:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                      "typeString": "mapping(bytes32 => uint256)"
                                    }
                                  },
                                  "id": 19768,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19766,
                                      "name": "tmpProposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19405,
                                      "src": "27751:11:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                      }
                                    },
                                    "id": 19767,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17953,
                                    "src": "27751:26:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "27728:50:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 19774,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "27852:1:66",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 19769,
                                        "name": "orgBoostedProposalsCnt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18082,
                                        "src": "27797:22:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                          "typeString": "mapping(bytes32 => uint256)"
                                        }
                                      },
                                      "id": 19772,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 19770,
                                          "name": "tmpProposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19405,
                                          "src": "27820:11:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                          }
                                        },
                                        "id": 19771,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "organizationId",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17953,
                                        "src": "27820:26:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "27797:50:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 19773,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 21263,
                                    "src": "27797:54:66",
                                    "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": 19775,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "27797:57:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "27728:126:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19777,
                              "nodeType": "ExpressionStatement",
                              "src": "27728:126:66"
                            },
                            {
                              "assignments": [
                                19779
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19779,
                                  "name": "boostedProposals",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19826,
                                  "src": "27969:24:66",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 19778,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "27969:7:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19784,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 19780,
                                  "name": "orgBoostedProposalsCnt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18082,
                                  "src": "27996:22:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                    "typeString": "mapping(bytes32 => uint256)"
                                  }
                                },
                                "id": 19783,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19781,
                                    "name": "tmpProposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19405,
                                    "src": "28019:11:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                    }
                                  },
                                  "id": 19782,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "organizationId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17953,
                                  "src": "28019:26:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "27996:50:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "27969:77:66"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 19785,
                                  "name": "boostedProposals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19779,
                                  "src": "28068:16:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 19786,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "28088:1:66",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "28068:21:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 19824,
                                "nodeType": "Block",
                                "src": "28194:313:66",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19801,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 19796,
                                        "name": "averageDownstakesOfBoosted",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19434,
                                        "src": "28216:26:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 19797,
                                          "name": "averagesDownstakesOfBoosted",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18090,
                                          "src": "28245:27:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                            "typeString": "mapping(bytes32 => uint256)"
                                          }
                                        },
                                        "id": 19800,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19798,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19392,
                                            "src": "28273:8:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 19799,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "organizationId",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17953,
                                          "src": "28273:23:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "28245:52:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "28216:81:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 19802,
                                    "nodeType": "ExpressionStatement",
                                    "src": "28216:81:66"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19822,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 19803,
                                          "name": "averagesDownstakesOfBoosted",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18090,
                                          "src": "28319:27:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                            "typeString": "mapping(bytes32 => uint256)"
                                          }
                                        },
                                        "id": 19806,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19804,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19392,
                                            "src": "28347:8:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 19805,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "organizationId",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17953,
                                          "src": "28347:23:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "28319:52:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 19821,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 19814,
                                                      "name": "proposal",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 19392,
                                                      "src": "28450:8:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                      }
                                                    },
                                                    "id": 19815,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "stakes",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 17997,
                                                    "src": "28450:15:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                      "typeString": "mapping(uint256 => uint256)"
                                                    }
                                                  },
                                                  "id": 19817,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "id": 19816,
                                                    "name": "NO",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 18096,
                                                    "src": "28466:2:66",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "28450:19:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 19811,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "argumentTypes": null,
                                                        "id": 19809,
                                                        "name": "boostedProposals",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 19779,
                                                        "src": "28426:16:66",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "+",
                                                      "rightExpression": {
                                                        "argumentTypes": null,
                                                        "hexValue": "31",
                                                        "id": 19810,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "28443:1:66",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_1_by_1",
                                                          "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                      },
                                                      "src": "28426:18:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 19807,
                                                      "name": "averageDownstakesOfBoosted",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 19434,
                                                      "src": "28395:26:66",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 19808,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mul",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 21215,
                                                    "src": "28395:30:66",
                                                    "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": 19812,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "28395:50:66",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 19813,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 21263,
                                                "src": "28395:54:66",
                                                "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": 19818,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "28395:75:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 19819,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "28394:77:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 19820,
                                          "name": "boostedProposals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19779,
                                          "src": "28472:16:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "28394:94:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "28319:169:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 19823,
                                    "nodeType": "ExpressionStatement",
                                    "src": "28319:169:66"
                                  }
                                ]
                              },
                              "id": 19825,
                              "nodeType": "IfStatement",
                              "src": "28064:443:66",
                              "trueBody": {
                                "id": 19795,
                                "nodeType": "Block",
                                "src": "28091:97:66",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19793,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 19788,
                                          "name": "averagesDownstakesOfBoosted",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18090,
                                          "src": "28113:27:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                            "typeString": "mapping(bytes32 => uint256)"
                                          }
                                        },
                                        "id": 19791,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19789,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19392,
                                            "src": "28141:8:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 19790,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "organizationId",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17953,
                                          "src": "28141:23:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "28113:52:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 19792,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "28168:1:66",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "28113:56:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 19794,
                                    "nodeType": "ExpressionStatement",
                                    "src": "28113:56:66"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19829,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19383,
                              "src": "28568:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 19830,
                                "name": "organizations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18086,
                                "src": "28593:13:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 19833,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19831,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19392,
                                  "src": "28607:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 19832,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "organizationId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17953,
                                "src": "28607:23:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "28593:38:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19834,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19392,
                                "src": "28645:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 19835,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17959,
                              "src": "28645:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19836,
                              "name": "totalReputation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19409,
                              "src": "28679:15:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19828,
                            "name": "ExecuteProposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20478,
                            "src": "28539:15:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,uint256,uint256)"
                            }
                          },
                          "id": 19837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28539:169:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19838,
                        "nodeType": "EmitStatement",
                        "src": "28534:174:66"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19840,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19383,
                              "src": "28745:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19841,
                              "name": "executionState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19429,
                              "src": "28758:14:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                "typeString": "enum GenesisProtocolLogic.ExecutionState"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_ExecutionState_$17910",
                                "typeString": "enum GenesisProtocolLogic.ExecutionState"
                              }
                            ],
                            "id": 19839,
                            "name": "GPExecuteProposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18056,
                            "src": "28727:17:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_ExecutionState_$17910_$returns$__$",
                              "typeString": "function (bytes32,enum GenesisProtocolLogic.ExecutionState)"
                            }
                          },
                          "id": 19842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28727:46:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19843,
                        "nodeType": "EmitStatement",
                        "src": "28722:51:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19849,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19383,
                              "src": "28848:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19851,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19392,
                                    "src": "28865:8:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 19852,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "winningVote",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17959,
                                  "src": "28865:20:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 19850,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "28861:3:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int256_$",
                                  "typeString": "type(int256)"
                                },
                                "typeName": "int"
                              },
                              "id": 19853,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28861:25:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19845,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19392,
                                    "src": "28812:8:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 19846,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "callbacks",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17955,
                                  "src": "28812:18:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 19844,
                                "name": "ProposalExecuteInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20583,
                                "src": "28787:24:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ProposalExecuteInterface_$20583_$",
                                  "typeString": "type(contract ProposalExecuteInterface)"
                                }
                              },
                              "id": 19847,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28787:44:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ProposalExecuteInterface_$20583",
                                "typeString": "contract ProposalExecuteInterface"
                              }
                            },
                            "id": 19848,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "executeProposal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20582,
                            "src": "28787:60:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_int256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,int256) external returns (bool)"
                            }
                          },
                          "id": 19854,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28787:100:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19855,
                        "nodeType": "ExpressionStatement",
                        "src": "28787:100:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19856,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "28901:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19858,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoBounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17969,
                            "src": "28901:18:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19859,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19392,
                              "src": "28922:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19860,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "daoBountyRemain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17967,
                            "src": "28922:24:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "28901:45:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19862,
                        "nodeType": "ExpressionStatement",
                        "src": "28901:45:66"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                    },
                    "id": 19869,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19865,
                        "name": "tmpProposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19405,
                        "src": "28970:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 19866,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17957,
                      "src": "28970:17:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19867,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19392,
                        "src": "28991:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 19868,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17957,
                      "src": "28991:14:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      }
                    },
                    "src": "28970:35:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19877,
                  "nodeType": "IfStatement",
                  "src": "28966:111:66",
                  "trueBody": {
                    "id": 19876,
                    "nodeType": "Block",
                    "src": "29007:70:66",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19871,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19383,
                              "src": "29038:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19872,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19392,
                                "src": "29051:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 19873,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "state",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17957,
                              "src": "29051:14:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            ],
                            "id": 19870,
                            "name": "StateChange",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18050,
                            "src": "29026:11:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_ProposalState_$17903_$returns$__$",
                              "typeString": "function (bytes32,enum GenesisProtocolLogic.ProposalState)"
                            }
                          },
                          "id": 19874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29026:40:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19875,
                        "nodeType": "EmitStatement",
                        "src": "29021:45:66"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ExecutionState_$17910",
                          "typeString": "enum GenesisProtocolLogic.ExecutionState"
                        },
                        "id": 19881,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 19878,
                          "name": "executionState",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19429,
                          "src": "29094:14:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ExecutionState_$17910",
                            "typeString": "enum GenesisProtocolLogic.ExecutionState"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19879,
                            "name": "ExecutionState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17910,
                            "src": "29112:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ExecutionState_$17910_$",
                              "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                            }
                          },
                          "id": 19880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "None",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "29112:19:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ExecutionState_$17910",
                            "typeString": "enum GenesisProtocolLogic.ExecutionState"
                          }
                        },
                        "src": "29094:37:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 19882,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "29093:39:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19390,
                  "id": 19883,
                  "nodeType": "Return",
                  "src": "29086:46:66"
                }
              ]
            },
            "documentation": "@dev execute check if the proposal has been decided, and if so, execute the proposal\n@param _proposalId the id of the proposal\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 19885,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 19386,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19383,
                    "src": "22783:11:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 19387,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 19385,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 18145,
                  "src": "22775:7:66",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "22775:20:66"
              }
            ],
            "name": "_execute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19384,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19383,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 19885,
                  "src": "22745:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19382,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "22745:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22744:21:66"
            },
            "returnParameters": {
              "id": 19390,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19389,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 19885,
                  "src": "22804:4:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19388,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "22804:4:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22803:6:66"
            },
            "scope": 20436,
            "src": "22727:6412:66",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 20070,
              "nodeType": "Block",
              "src": "29520:1650:66",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 19905,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19899,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19889,
                            "src": "29572:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 19900,
                            "name": "NUM_OF_CHOICES",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18093,
                            "src": "29581:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "29572:23:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19902,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19889,
                            "src": "29599:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29607:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "29599:9:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "29572:36:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "77726f6e6720766f74652076616c7565",
                        "id": 19906,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "29610:18:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d82d70f2dacf08ad4e0d64af0a4b6b4468b32b18c064b4e753cdfba3c6e5a6a8",
                          "typeString": "literal_string \"wrong vote value\""
                        },
                        "value": "wrong vote value"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d82d70f2dacf08ad4e0d64af0a4b6b4468b32b18c064b4e753cdfba3c6e5a6a8",
                          "typeString": "literal_string \"wrong vote value\""
                        }
                      ],
                      "id": 19898,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "29564:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 19907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29564:65:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19908,
                  "nodeType": "ExpressionStatement",
                  "src": "29564:65:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 19912,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 19910,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19891,
                          "src": "29647:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 19911,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "29657:1:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "29647:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7374616b696e6720616d6f756e742073686f756c64206265203e30",
                        "id": 19913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "29660:29:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_91d4369e2212c0af5bece6ece1fcbdc47c9df9cbc0c01f068a62871681a0f61a",
                          "typeString": "literal_string \"staking amount should be >0\""
                        },
                        "value": "staking amount should be >0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_91d4369e2212c0af5bece6ece1fcbdc47c9df9cbc0c01f068a62871681a0f61a",
                          "typeString": "literal_string \"staking amount should be >0\""
                        }
                      ],
                      "id": 19909,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "29639:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 19914,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29639:51:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19915,
                  "nodeType": "ExpressionStatement",
                  "src": "29639:51:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 19917,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19887,
                        "src": "29714:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 19916,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19885,
                      "src": "29705:8:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 19918,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29705:21:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19922,
                  "nodeType": "IfStatement",
                  "src": "29701:63:66",
                  "trueBody": {
                    "id": 19921,
                    "nodeType": "Block",
                    "src": "29728:36:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 19919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "29749:4:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 19897,
                        "id": 19920,
                        "nodeType": "Return",
                        "src": "29742:11:66"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    19924
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19924,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 20070,
                      "src": "29773:25:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19923,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "29773:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19928,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 19925,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18078,
                      "src": "29801:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 19927,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 19926,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19887,
                      "src": "29811:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "29801:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "29773:50:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 19941,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 19933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19929,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19924,
                              "src": "29839:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19930,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "29839:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19931,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "29857:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 19932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PreBoosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "29857:24:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "29839:42:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19934,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "29838:44:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 19939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19935,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19924,
                              "src": "29899:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 19936,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "29899:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19937,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "29917:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 19938,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Queued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "29917:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "29899:38:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19940,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "29898:40:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "29838:100:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19945,
                  "nodeType": "IfStatement",
                  "src": "29834:143:66",
                  "trueBody": {
                    "id": 19944,
                    "nodeType": "Block",
                    "src": "29940:37:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 19942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "29961:5:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 19897,
                        "id": 19943,
                        "nodeType": "Return",
                        "src": "29954:12:66"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    19947
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19947,
                      "name": "staker",
                      "nodeType": "VariableDeclaration",
                      "scope": 20070,
                      "src": "30055:21:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Staker"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 19946,
                        "name": "Staker",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17951,
                        "src": "30055:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19952,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19948,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19924,
                        "src": "30079:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 19949,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18001,
                      "src": "30079:16:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$17951_storage_$",
                        "typeString": "mapping(address => struct GenesisProtocolLogic.Staker storage ref)"
                      }
                    },
                    "id": 19951,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 19950,
                      "name": "_staker",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19893,
                      "src": "30096:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "30079:25:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$17951_storage",
                      "typeString": "struct GenesisProtocolLogic.Staker storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "30055:49:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 19963,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19953,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19947,
                              "src": "30119:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 19954,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17948,
                            "src": "30119:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19955,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30135:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "30119:17:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19957,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "30118:19:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19961,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19958,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19947,
                              "src": "30142:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 19959,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "vote",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17946,
                            "src": "30142:11:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 19960,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19889,
                            "src": "30157:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30142:20:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 19962,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "30141:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "30118:45:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 19967,
                  "nodeType": "IfStatement",
                  "src": "30114:88:66",
                  "trueBody": {
                    "id": 19966,
                    "nodeType": "Block",
                    "src": "30165:37:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 19964,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "30186:5:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 19897,
                        "id": 19965,
                        "nodeType": "Return",
                        "src": "30179:12:66"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    19969
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19969,
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 20070,
                      "src": "30212:14:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 19968,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "30212:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 19971,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 19970,
                    "name": "_amount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19891,
                    "src": "30229:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "30212:24:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 19975,
                            "name": "_staker",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19893,
                            "src": "30280:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19977,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22229,
                                "src": "30297:4:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_GenesisProtocolLogic_$20436",
                                  "typeString": "contract GenesisProtocolLogic"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_GenesisProtocolLogic_$20436",
                                  "typeString": "contract GenesisProtocolLogic"
                                }
                              ],
                              "id": 19976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "30289:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 19978,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30289:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 19979,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19969,
                            "src": "30304:6:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 19973,
                            "name": "stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18103,
                            "src": "30254:12:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$22137",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 19974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22099,
                          "src": "30254:25:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 19980,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "30254:57:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6661696c207472616e736665722066726f6d207374616b6572",
                        "id": 19981,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "30313:27:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ad0934b2b17c5a144168f7c3b41e6e295357361c44445f6c875b7de168a8b283",
                          "typeString": "literal_string \"fail transfer from staker\""
                        },
                        "value": "fail transfer from staker"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ad0934b2b17c5a144168f7c3b41e6e295357361c44445f6c875b7de168a8b283",
                          "typeString": "literal_string \"fail transfer from staker\""
                        }
                      ],
                      "id": 19972,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "30246:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 19982,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30246:95:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19983,
                  "nodeType": "ExpressionStatement",
                  "src": "30246:95:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19992,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19984,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19924,
                        "src": "30351:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 19986,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalStakes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17971,
                      "src": "30351:20:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19990,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19969,
                          "src": "30399:6:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19987,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19924,
                            "src": "30374:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 19988,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalStakes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17971,
                          "src": "30374:20:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19989,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "30374:24:66",
                        "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": 19991,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "30374:32:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30351:55:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 19993,
                  "nodeType": "ExpressionStatement",
                  "src": "30351:55:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 20002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 19994,
                        "name": "staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19947,
                        "src": "30447:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                        }
                      },
                      "id": 19996,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "amount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17948,
                      "src": "30447:13:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 20000,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19969,
                          "src": "30481:6:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19997,
                            "name": "staker",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19947,
                            "src": "30463:6:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                            }
                          },
                          "id": 19998,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17948,
                          "src": "30463:13:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19999,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "30463:17:66",
                        "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": 20001,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "30463:25:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30447:41:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 20003,
                  "nodeType": "ExpressionStatement",
                  "src": "30447:41:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 20008,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 20005,
                            "name": "staker",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19947,
                            "src": "30631:6:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                            }
                          },
                          "id": 20006,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17948,
                          "src": "30631:13:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                          "id": 20007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "30648:35:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                            "typeString": "int_const 3402...(31 digits omitted)...1456"
                          },
                          "value": "0x100000000000000000000000000000000"
                        },
                        "src": "30631:52:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7374616b696e6720616d6f756e7420697320746f6f2068696768",
                        "id": 20009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "30685:28:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c08e8b6b6438b031b9203bfd11dc79b9738fb9df8efea56d562c5a29a6e1f3ee",
                          "typeString": "literal_string \"staking amount is too high\""
                        },
                        "value": "staking amount is too high"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c08e8b6b6438b031b9203bfd11dc79b9738fb9df8efea56d562c5a29a6e1f3ee",
                          "typeString": "literal_string \"staking amount is too high\""
                        }
                      ],
                      "id": 20004,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "30623:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 20010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30623:91:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20011,
                  "nodeType": "ExpressionStatement",
                  "src": "30623:91:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 20016,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 20013,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19924,
                            "src": "30732:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 20014,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalStakes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17971,
                          "src": "30732:20:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                          "id": 20015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "30756:35:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                            "typeString": "int_const 3402...(31 digits omitted)...1456"
                          },
                          "value": "0x100000000000000000000000000000000"
                        },
                        "src": "30732:59:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "746f74616c207374616b657320697320746f6f2068696768",
                        "id": 20017,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "30793:26:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e3ddc8a760353c6cb4764665e8783f172d91728d9fd6e3fa17211593e37c1469",
                          "typeString": "literal_string \"total stakes is too high\""
                        },
                        "value": "total stakes is too high"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e3ddc8a760353c6cb4764665e8783f172d91728d9fd6e3fa17211593e37c1469",
                          "typeString": "literal_string \"total stakes is too high\""
                        }
                      ],
                      "id": 20012,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "30724:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 20018,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30724:96:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20019,
                  "nodeType": "ExpressionStatement",
                  "src": "30724:96:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 20022,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 20020,
                      "name": "_vote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19889,
                      "src": "30835:5:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 20021,
                      "name": "YES",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18099,
                      "src": "30844:3:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30835:12:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 20034,
                  "nodeType": "IfStatement",
                  "src": "30831:98:66",
                  "trueBody": {
                    "id": 20033,
                    "nodeType": "Block",
                    "src": "30849:80:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20023,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19947,
                              "src": "30863:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 20025,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount4Bounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17950,
                            "src": "30863:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 20029,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19969,
                                "src": "30911:6:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20026,
                                  "name": "staker",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19947,
                                  "src": "30886:6:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                  }
                                },
                                "id": 20027,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount4Bounty",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17950,
                                "src": "30886:20:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20028,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21287,
                              "src": "30886:24:66",
                              "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": 20030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30886:32:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30863:55:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20032,
                        "nodeType": "ExpressionStatement",
                        "src": "30863:55:66"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 20039,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 20035,
                        "name": "staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19947,
                        "src": "30938:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$17951_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                        }
                      },
                      "id": 20037,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "vote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17946,
                      "src": "30938:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 20038,
                      "name": "_vote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19889,
                      "src": "30952:5:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30938:19:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 20040,
                  "nodeType": "ExpressionStatement",
                  "src": "30938:19:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 20053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 20041,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19924,
                          "src": "30968:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 20044,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17997,
                        "src": "30968:15:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 20045,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 20043,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19889,
                        "src": "30984:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "30968:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20048,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19924,
                              "src": "31004:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 20049,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17997,
                            "src": "31004:15:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 20051,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 20050,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19889,
                            "src": "31020:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "31004:22:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 20046,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19969,
                          "src": "30993:6:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20047,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "30993:10:66",
                        "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": 20052,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "30993:34:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30968:59:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 20054,
                  "nodeType": "ExpressionStatement",
                  "src": "30968:59:66"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 20056,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19887,
                        "src": "31048:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 20057,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18086,
                          "src": "31061:13:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 20060,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 20058,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19924,
                            "src": "31075:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 20059,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17953,
                          "src": "31075:23:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "31061:38:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 20061,
                        "name": "_staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19893,
                        "src": "31101:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 20062,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19889,
                        "src": "31110:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 20063,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19891,
                        "src": "31117:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 20055,
                      "name": "Stake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18014,
                      "src": "31042:5:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                      }
                    },
                    "id": 20064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31042:83:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20065,
                  "nodeType": "EmitStatement",
                  "src": "31037:88:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 20067,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19887,
                        "src": "31151:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 20066,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19885,
                      "src": "31142:8:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 20068,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31142:21:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19897,
                  "id": 20069,
                  "nodeType": "Return",
                  "src": "31135:28:66"
                }
              ]
            },
            "documentation": "@dev staking function\n@param _proposalId id of the proposal\n@param _vote  NO(2) or YES(1).\n@param _amount the betting amount\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 20071,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_stake",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19894,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19887,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 20071,
                  "src": "29427:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19886,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "29427:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19889,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 20071,
                  "src": "29448:13:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19888,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29448:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19891,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 20071,
                  "src": "29463:15:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19890,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29463:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19893,
                  "name": "_staker",
                  "nodeType": "VariableDeclaration",
                  "scope": 20071,
                  "src": "29480:15:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19892,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29480:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "29426:70:66"
            },
            "returnParameters": {
              "id": 19897,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19896,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 20071,
                  "src": "29514:4:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19895,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "29514:4:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "29513:6:66"
            },
            "scope": 20436,
            "src": "29411:1759:66",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 20365,
              "nodeType": "Block",
              "src": "32020:2776:66",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 20091,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20085,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20077,
                            "src": "32038:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 20086,
                            "name": "NUM_OF_CHOICES",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18093,
                            "src": "32047:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "32038:23:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20088,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20077,
                            "src": "32065:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 20089,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32073:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "32065:9:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "32038:36:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30203c205f766f7465203c3d2032",
                        "id": 20092,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32076:16:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6c167076fd1b36c01702a4c4b1e40be23cd6e9623d657cdb939ad9f0e6a548db",
                          "typeString": "literal_string \"0 < _vote <= 2\""
                        },
                        "value": "0 < _vote <= 2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6c167076fd1b36c01702a4c4b1e40be23cd6e9623d657cdb939ad9f0e6a548db",
                          "typeString": "literal_string \"0 < _vote <= 2\""
                        }
                      ],
                      "id": 20084,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "32030:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 20093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32030:63:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20094,
                  "nodeType": "ExpressionStatement",
                  "src": "32030:63:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 20096,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20073,
                        "src": "32116:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 20095,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19885,
                      "src": "32107:8:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 20097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32107:21:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 20101,
                  "nodeType": "IfStatement",
                  "src": "32103:63:66",
                  "trueBody": {
                    "id": 20100,
                    "nodeType": "Block",
                    "src": "32130:36:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 20098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "32151:4:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 20083,
                        "id": 20099,
                        "nodeType": "Return",
                        "src": "32144:11:66"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    20103
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 20103,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 20365,
                      "src": "32176:24:66",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 20102,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17937,
                        "src": "32176:10:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$17937_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 20110,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 20104,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18074,
                      "src": "32203:10:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$17937_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                      }
                    },
                    "id": 20109,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 20105,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18078,
                          "src": "32214:9:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                            "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                          }
                        },
                        "id": 20107,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 20106,
                          "name": "_proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20073,
                          "src": "32224:11:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "32214:22:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                        }
                      },
                      "id": 20108,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17965,
                      "src": "32214:33:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "32203:45:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$17937_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32176:72:66"
                },
                {
                  "assignments": [
                    20112
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 20112,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 20365,
                      "src": "32258:25:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 20111,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "32258:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 20116,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 20113,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18078,
                      "src": "32286:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 20115,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 20114,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20073,
                      "src": "32296:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "32286:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32258:50:66"
                },
                {
                  "assignments": [
                    20118
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 20118,
                      "name": "reputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 20365,
                      "src": "32365:18:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 20117,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "32365:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 20127,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 20124,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20075,
                        "src": "32451:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 20125,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20073,
                        "src": "32459:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20120,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20112,
                              "src": "32418:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 20121,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "callbacks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17955,
                            "src": "32418:18:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 20119,
                          "name": "VotingMachineCallbacksInterface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20647,
                          "src": "32386:31:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$20647_$",
                            "typeString": "type(contract VotingMachineCallbacksInterface)"
                          }
                        },
                        "id": 20122,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32386:51:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$20647",
                          "typeString": "contract VotingMachineCallbacksInterface"
                        }
                      },
                      "id": 20123,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reputationOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 20637,
                      "src": "32386:64:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (address,bytes32) view external returns (uint256)"
                      }
                    },
                    "id": 20126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32386:85:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32365:106:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 20131,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 20129,
                          "name": "reputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20118,
                          "src": "32489:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 20130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "32502:1:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "32489:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5f766f746572206d75737420686176652072657075746174696f6e",
                        "id": 20132,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32505:29:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_904ad937a2b27da2b88c6196de3f24fd299b75859ba99719946b0bb0ef68cc41",
                          "typeString": "literal_string \"_voter must have reputation\""
                        },
                        "value": "_voter must have reputation"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_904ad937a2b27da2b88c6196de3f24fd299b75859ba99719946b0bb0ef68cc41",
                          "typeString": "literal_string \"_voter must have reputation\""
                        }
                      ],
                      "id": 20128,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "32481:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 20133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32481:54:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20134,
                  "nodeType": "ExpressionStatement",
                  "src": "32481:54:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 20138,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 20136,
                          "name": "reputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20118,
                          "src": "32553:10:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 20137,
                          "name": "_rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20079,
                          "src": "32567:4:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "32553:18:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "72657075746174696f6e203e3d205f726570",
                        "id": 20139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32573:20:66",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_854a896e4ac217d1bc6f5707e5523361ed247e9f3d2bb1c843a9e088d13a9e72",
                          "typeString": "literal_string \"reputation >= _rep\""
                        },
                        "value": "reputation >= _rep"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_854a896e4ac217d1bc6f5707e5523361ed247e9f3d2bb1c843a9e088d13a9e72",
                          "typeString": "literal_string \"reputation >= _rep\""
                        }
                      ],
                      "id": 20135,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        22174,
                        22175
                      ],
                      "referencedDeclaration": 22175,
                      "src": "32545:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 20140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32545:49:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20141,
                  "nodeType": "ExpressionStatement",
                  "src": "32545:49:66"
                },
                {
                  "assignments": [
                    20143
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 20143,
                      "name": "rep",
                      "nodeType": "VariableDeclaration",
                      "scope": 20365,
                      "src": "32604:11:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 20142,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "32604:7:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 20145,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 20144,
                    "name": "_rep",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 20079,
                    "src": "32618:4:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32604:18:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 20148,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 20146,
                      "name": "rep",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20143,
                      "src": "32636:3:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 20147,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "32643:1:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "32636:8:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 20154,
                  "nodeType": "IfStatement",
                  "src": "32632:55:66",
                  "trueBody": {
                    "id": 20153,
                    "nodeType": "Block",
                    "src": "32646:41:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 20149,
                            "name": "rep",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20143,
                            "src": "32660:3:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 20150,
                            "name": "reputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20118,
                            "src": "32666:10:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "32660:16:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20152,
                        "nodeType": "ExpressionStatement",
                        "src": "32660:16:66"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 20161,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 20155,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20112,
                            "src": "32758:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 20156,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "voters",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17993,
                          "src": "32758:15:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$17944_storage_$",
                            "typeString": "mapping(address => struct GenesisProtocolLogic.Voter storage ref)"
                          }
                        },
                        "id": 20158,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 20157,
                          "name": "_voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20075,
                          "src": "32774:6:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "32758:23:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$17944_storage",
                          "typeString": "struct GenesisProtocolLogic.Voter storage ref"
                        }
                      },
                      "id": 20159,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reputation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17941,
                      "src": "32758:34:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 20160,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "32796:1:66",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "32758:39:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 20165,
                  "nodeType": "IfStatement",
                  "src": "32754:82:66",
                  "trueBody": {
                    "id": 20164,
                    "nodeType": "Block",
                    "src": "32799:37:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 20162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "32820:5:66",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 20083,
                        "id": 20163,
                        "nodeType": "Return",
                        "src": "32813:12:66"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 20178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 20166,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20112,
                          "src": "32875:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 20169,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17985,
                        "src": "32875:14:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 20170,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 20168,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20077,
                        "src": "32890:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "32875:21:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20173,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20112,
                              "src": "32907:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 20174,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "votes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17985,
                            "src": "32907:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 20176,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 20175,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20077,
                            "src": "32922:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "32907:21:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 20171,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20143,
                          "src": "32899:3:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20172,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21287,
                        "src": "32899:7:66",
                        "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": 20177,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "32899:30:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "32875:54:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 20179,
                  "nodeType": "ExpressionStatement",
                  "src": "32875:54:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 20208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20180,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20112,
                                "src": "33087:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 20181,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17985,
                              "src": "33087:14:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 20183,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 20182,
                              "name": "_vote",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20077,
                              "src": "33102:5:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "33087:21:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20184,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20112,
                                "src": "33111:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 20185,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17985,
                              "src": "33111:14:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 20188,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20186,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20112,
                                "src": "33126:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 20187,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17959,
                              "src": "33126:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "33111:36:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "33087:60:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 20190,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "33086:62:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 20206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20191,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20112,
                                      "src": "33166:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 20192,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "votes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17985,
                                    "src": "33166:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 20194,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 20193,
                                    "name": "NO",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18096,
                                    "src": "33181:2:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "33166:18:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20195,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20112,
                                      "src": "33188:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 20196,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "votes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17985,
                                    "src": "33188:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 20199,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20197,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20112,
                                      "src": "33203:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 20198,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "winningVote",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17959,
                                    "src": "33203:20:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "33188:36:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "33166:58:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 20201,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "33165:60:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 20205,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20202,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20112,
                                "src": "33241:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 20203,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17959,
                              "src": "33241:20:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 20204,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18099,
                              "src": "33265:3:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "33241:27:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "33165:103:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 20207,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "33164:105:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "33086:183:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 20274,
                  "nodeType": "IfStatement",
                  "src": "33082:937:66",
                  "trueBody": {
                    "id": 20273,
                    "nodeType": "Block",
                    "src": "33271:748:66",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 20235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 20229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              },
                              "id": 20213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20209,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20112,
                                  "src": "33289:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 20210,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "state",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17957,
                                "src": "33289:14:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20211,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17903,
                                  "src": "33307:13:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                    "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                  }
                                },
                                "id": 20212,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Boosted",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "33307:21:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "src": "33289:39:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20227,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 20219,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 20214,
                                          "name": "now",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22173,
                                          "src": "33408:3:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 20215,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 20112,
                                              "src": "33414:8:66",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 20216,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "times",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17979,
                                            "src": "33414:14:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                              "typeString": "uint256[3] storage ref"
                                            }
                                          },
                                          "id": 20218,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 20217,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "33429:1:66",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "33414:17:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "33408:23:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 20220,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "33407:25:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 20225,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 20221,
                                            "name": "params",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20103,
                                            "src": "33437:6:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                            }
                                          },
                                          "id": 20222,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "boostedVotePeriodLimit",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17916,
                                          "src": "33437:29:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 20223,
                                            "name": "params",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20103,
                                            "src": "33469:6:66",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                            }
                                          },
                                          "id": 20224,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "quietEndingPeriod",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17924,
                                          "src": "33469:24:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "33437:56:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 20226,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "33436:58:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "33407:87:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 20228,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "33406:89:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "33289:206:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            },
                            "id": 20234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20230,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20112,
                                "src": "33514:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 20231,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "state",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17957,
                              "src": "33514:14:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20232,
                                "name": "ProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17903,
                                "src": "33532:13:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                }
                              },
                              "id": 20233,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "QuietEndingPeriod",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "33532:31:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            },
                            "src": "33514:49:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "33289:274:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 20266,
                        "nodeType": "IfStatement",
                        "src": "33285:682:66",
                        "trueBody": {
                          "id": 20265,
                          "nodeType": "Block",
                          "src": "33565:402:66",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                },
                                "id": 20240,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20236,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20112,
                                    "src": "33623:8:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 20237,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "state",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17957,
                                  "src": "33623:14:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20238,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17903,
                                    "src": "33641:13:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                    }
                                  },
                                  "id": 20239,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "QuietEndingPeriod",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "33641:31:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "src": "33623:49:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 20256,
                              "nodeType": "IfStatement",
                              "src": "33619:231:66",
                              "trueBody": {
                                "id": 20255,
                                "nodeType": "Block",
                                "src": "33674:176:66",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20246,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 20241,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20112,
                                          "src": "33696:8:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 20243,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "currentBoostedVotePeriodLimit",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17963,
                                        "src": "33696:38:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 20244,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20103,
                                          "src": "33737:6:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                          }
                                        },
                                        "id": 20245,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "quietEndingPeriod",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17924,
                                        "src": "33737:24:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "33696:65:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 20247,
                                    "nodeType": "ExpressionStatement",
                                    "src": "33696:65:66"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20253,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 20248,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20112,
                                          "src": "33783:8:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 20250,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "state",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17957,
                                        "src": "33783:14:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$17903",
                                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 20251,
                                          "name": "ProposalState",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17903,
                                          "src": "33800:13:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                            "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                          }
                                        },
                                        "id": 20252,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "QuietEndingPeriod",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "33800:31:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$17903",
                                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                                        }
                                      },
                                      "src": "33783:48:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "id": 20254,
                                    "nodeType": "ExpressionStatement",
                                    "src": "33783:48:66"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 20263,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20257,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20112,
                                      "src": "33929:8:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 20260,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "times",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17979,
                                    "src": "33929:14:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                      "typeString": "uint256[3] storage ref"
                                    }
                                  },
                                  "id": 20261,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 20259,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "33944:1:66",
                                    "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": "33929:17:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 20262,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22173,
                                  "src": "33949:3:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "33929:23:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20264,
                              "nodeType": "ExpressionStatement",
                              "src": "33929:23:66"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20267,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20112,
                              "src": "33980:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 20269,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "winningVote",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17959,
                            "src": "33980:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 20270,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20077,
                            "src": "34003:5:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "33980:28:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20272,
                        "nodeType": "ExpressionStatement",
                        "src": "33980:28:66"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 20298,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 20275,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20112,
                          "src": "34028:8:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 20278,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17993,
                        "src": "34028:15:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$17944_storage_$",
                          "typeString": "mapping(address => struct GenesisProtocolLogic.Voter storage ref)"
                        }
                      },
                      "id": 20279,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 20277,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20075,
                        "src": "34044:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "34028:23:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$17944_storage",
                        "typeString": "struct GenesisProtocolLogic.Voter storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 20281,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20143,
                          "src": "34086:3:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 20282,
                          "name": "_vote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20077,
                          "src": "34109:5:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 20295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    },
                                    "id": 20287,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 20283,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20112,
                                        "src": "34141:8:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 20284,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "state",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17957,
                                      "src": "34141:14:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 20285,
                                        "name": "ProposalState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17903,
                                        "src": "34159:13:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                          "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                        }
                                      },
                                      "id": 20286,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "PreBoosted",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "34159:24:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "src": "34141:42:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 20288,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "34140:44:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    },
                                    "id": 20293,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 20289,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20112,
                                        "src": "34189:8:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 20290,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "state",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17957,
                                      "src": "34189:14:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 20291,
                                        "name": "ProposalState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17903,
                                        "src": "34207:13:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                          "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                        }
                                      },
                                      "id": 20292,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "Queued",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "34207:20:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "src": "34189:38:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 20294,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "34188:40:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "34140:88:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 20296,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "34139:90:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 20280,
                        "name": "Voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17944,
                        "src": "34054:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Voter_$17944_storage_ptr_$",
                          "typeString": "type(struct GenesisProtocolLogic.Voter storage pointer)"
                        }
                      },
                      "id": 20297,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "reputation",
                        "vote",
                        "preBoosted"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "34054:186:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$17944_memory",
                        "typeString": "struct GenesisProtocolLogic.Voter memory"
                      }
                    },
                    "src": "34028:212:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$17944_storage",
                      "typeString": "struct GenesisProtocolLogic.Voter storage ref"
                    }
                  },
                  "id": 20299,
                  "nodeType": "ExpressionStatement",
                  "src": "34028:212:66"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 20312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 20304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20300,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20112,
                              "src": "34255:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 20301,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "34255:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20302,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "34273:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 20303,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PreBoosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "34273:24:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "34255:42:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 20305,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "34254:44:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$17903",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 20310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20306,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20112,
                              "src": "34303:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 20307,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17957,
                            "src": "34303:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 20308,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17903,
                              "src": "34321:13:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 20309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Queued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "34321:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$17903",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "34303:38:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 20311,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "34302:40:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "34254:88:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 20349,
                  "nodeType": "IfStatement",
                  "src": "34250:402:66",
                  "trueBody": {
                    "id": 20348,
                    "nodeType": "Block",
                    "src": "34344:308:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20313,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20112,
                                "src": "34358:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 20316,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "preBoostedVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17989,
                              "src": "34358:24:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 20317,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 20315,
                              "name": "_vote",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20077,
                              "src": "34383:5:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "34358:31:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20320,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20112,
                                    "src": "34400:8:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 20321,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "preBoostedVotes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17989,
                                  "src": "34400:24:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 20323,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 20322,
                                  "name": "_vote",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20077,
                                  "src": "34425:5:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "34400:31:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 20318,
                                "name": "rep",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20143,
                                "src": "34392:3:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21287,
                              "src": "34392:7:66",
                              "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": 20324,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "34392:40:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "34358:74:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20326,
                        "nodeType": "ExpressionStatement",
                        "src": "34358:74:66"
                      },
                      {
                        "assignments": [
                          20328
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20328,
                            "name": "reputationDeposit",
                            "nodeType": "VariableDeclaration",
                            "scope": 20348,
                            "src": "34446:25:66",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20327,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "34446:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20337,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 20332,
                                    "name": "rep",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20143,
                                    "src": "34512:3:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20329,
                                      "name": "params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20103,
                                      "src": "34475:6:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Parameters_$17937_memory_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                      }
                                    },
                                    "id": 20330,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "votersReputationLossRatio",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17928,
                                    "src": "34475:32:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 20331,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 21215,
                                  "src": "34475:36:66",
                                  "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": 20333,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "34475:41:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20334,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "34474:43:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 20335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "34518:3:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "34474:47:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "34446:75:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20343,
                              "name": "reputationDeposit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20328,
                              "src": "34602:17:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20344,
                              "name": "_voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20075,
                              "src": "34621:6:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20345,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20073,
                              "src": "34629:11:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20339,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20112,
                                    "src": "34567:8:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 20340,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "callbacks",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17955,
                                  "src": "34567:18:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 20338,
                                "name": "VotingMachineCallbacksInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20647,
                                "src": "34535:31:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$20647_$",
                                  "typeString": "type(contract VotingMachineCallbacksInterface)"
                                }
                              },
                              "id": 20341,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "34535:51:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$20647",
                                "typeString": "contract VotingMachineCallbacksInterface"
                              }
                            },
                            "id": 20342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burnReputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20608,
                            "src": "34535:66:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (uint256,address,bytes32) external returns (bool)"
                            }
                          },
                          "id": 20346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34535:106:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20347,
                        "nodeType": "ExpressionStatement",
                        "src": "34535:106:66"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 20351,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20073,
                        "src": "34679:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 20352,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18086,
                          "src": "34692:13:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 20355,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 20353,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20112,
                            "src": "34706:8:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 20354,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17953,
                          "src": "34706:23:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "34692:38:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 20356,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20075,
                        "src": "34732:6:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 20357,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20077,
                        "src": "34740:5:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 20358,
                        "name": "rep",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20143,
                        "src": "34747:3:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 20350,
                      "name": "VoteProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20490,
                      "src": "34666:12:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                      }
                    },
                    "id": 20359,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34666:85:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20360,
                  "nodeType": "EmitStatement",
                  "src": "34661:90:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 20362,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20073,
                        "src": "34777:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 20361,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19885,
                      "src": "34768:8:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 20363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34768:21:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 20083,
                  "id": 20364,
                  "nodeType": "Return",
                  "src": "34761:28:66"
                }
              ]
            },
            "documentation": "@dev Vote for a proposal, if the voter already voted, cancel the last vote and set a new one instead\n@param _proposalId id of the proposal\n@param _voter used in case the vote is cast for someone else\n@param _vote a value between 0 to and the proposal's number of choices.\n@param _rep how many reputation the voter would like to stake for this vote.\n        if  _rep==0 so the voter full reputation will be use.\n@return true in case of proposal execution otherwise false\nthrows if proposal is not open or if it has been executed\nNB: executes the proposal if a decision has been reached",
            "id": 20366,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "internalVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 20080,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20073,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 20366,
                  "src": "31931:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 20072,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "31931:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20075,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 20366,
                  "src": "31952:14:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20074,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31952:7:66",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20077,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 20366,
                  "src": "31968:13:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20076,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31968:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20079,
                  "name": "_rep",
                  "nodeType": "VariableDeclaration",
                  "scope": 20366,
                  "src": "31983:12:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20078,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31983:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "31930:66:66"
            },
            "returnParameters": {
              "id": 20083,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20082,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 20366,
                  "src": "32014:4:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20081,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "32014:4:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "32013:6:66"
            },
            "scope": 20436,
            "src": "31909:2887:66",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 20394,
              "nodeType": "Block",
              "src": "35099:241:66",
              "statements": [
                {
                  "assignments": [
                    20374
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 20374,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 20394,
                      "src": "35109:25:66",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 20373,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 18002,
                        "src": "35109:8:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 20378,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 20375,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18078,
                      "src": "35137:9:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 20377,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 20376,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20368,
                      "src": "35147:11:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "35137:22:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "35109:50:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20387,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20374,
                                "src": "35312:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 20388,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17997,
                              "src": "35312:15:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 20390,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 20389,
                              "name": "NO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18096,
                              "src": "35328:2:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "35312:19:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 20386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "35304:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint216_$",
                            "typeString": "type(uint216)"
                          },
                          "typeName": "uint216"
                        },
                        "id": 20391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35304:28:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint216",
                          "typeString": "uint216"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint216",
                          "typeString": "uint216"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20380,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20374,
                                "src": "35273:8:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$18002_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 20381,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17997,
                              "src": "35273:15:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 20383,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 20382,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18099,
                              "src": "35289:3:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "35273:20:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 20379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "35265:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint216_$",
                            "typeString": "type(uint216)"
                          },
                          "typeName": "uint216"
                        },
                        "id": 20384,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35265:29:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint216",
                          "typeString": "uint216"
                        }
                      },
                      "id": 20385,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "fraction",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16523,
                      "src": "35265:38:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint216_$_t_uint216_$returns$_t_uint256_$bound_to$_t_uint216_$",
                        "typeString": "function (uint216,uint216) pure returns (uint256)"
                      }
                    },
                    "id": 20392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35265:68:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 20372,
                  "id": 20393,
                  "nodeType": "Return",
                  "src": "35258:75:66"
                }
              ]
            },
            "documentation": "@dev _score return the proposal score (Confidence level)\nFor dual choice proposal S = (S+)/(S-)\n@param _proposalId the ID of the proposal\n@return uint256 proposal score as real number.",
            "id": 20395,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_score",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 20369,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20368,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 20395,
                  "src": "35047:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 20367,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "35047:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "35046:21:66"
            },
            "returnParameters": {
              "id": 20372,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20371,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 20395,
                  "src": "35090:7:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20370,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "35090:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "35089:9:66"
            },
            "scope": 20436,
            "src": "35031:309:66",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 20434,
              "nodeType": "Block",
              "src": "35572:297:66",
              "statements": [
                {
                  "assignments": [
                    20403
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 20403,
                      "name": "pState",
                      "nodeType": "VariableDeclaration",
                      "scope": 20434,
                      "src": "35582:20:66",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$17903",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 20402,
                        "name": "ProposalState",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 17903,
                        "src": "35582:13:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ProposalState_$17903",
                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 20408,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 20404,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18078,
                        "src": "35605:9:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$18002_storage_$",
                          "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                        }
                      },
                      "id": 20406,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 20405,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20397,
                        "src": "35615:11:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "35605:22:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$18002_storage",
                        "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                      }
                    },
                    "id": 20407,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "state",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17957,
                    "src": "35605:28:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "35582:51:66"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 20431,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 20425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 20419,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  },
                                  "id": 20412,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 20409,
                                    "name": "pState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20403,
                                    "src": "35652:6:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20410,
                                      "name": "ProposalState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17903,
                                      "src": "35662:13:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                        "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                      }
                                    },
                                    "id": 20411,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "PreBoosted",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "35662:24:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    }
                                  },
                                  "src": "35652:34:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 20413,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "35651:36:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  },
                                  "id": 20417,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 20414,
                                    "name": "pState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20403,
                                    "src": "35707:6:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 20415,
                                      "name": "ProposalState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17903,
                                      "src": "35717:13:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                        "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                      }
                                    },
                                    "id": 20416,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Boosted",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "35717:21:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$17903",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    }
                                  },
                                  "src": "35707:31:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 20418,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "35706:33:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "35651:88:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                },
                                "id": 20423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 20420,
                                  "name": "pState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20403,
                                  "src": "35759:6:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20421,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17903,
                                    "src": "35769:13:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                    }
                                  },
                                  "id": 20422,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "QuietEndingPeriod",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "35769:31:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$17903",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "src": "35759:41:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 20424,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "35758:43:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "35651:150:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$17903",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              },
                              "id": 20429,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20426,
                                "name": "pState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20403,
                                "src": "35821:6:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20427,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17903,
                                  "src": "35831:13:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$17903_$",
                                    "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                  }
                                },
                                "id": 20428,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Queued",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "35831:20:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$17903",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "src": "35821:30:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 20430,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "35820:32:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "35651:201:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 20432,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "35650:212:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 20401,
                  "id": 20433,
                  "nodeType": "Return",
                  "src": "35643:219:66"
                }
              ]
            },
            "documentation": "@dev _isVotable check if the proposal is votable\n@param _proposalId the ID of the proposal\n@return bool true or false",
            "id": 20435,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_isVotable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 20398,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20397,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 20435,
                  "src": "35523:19:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 20396,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "35523:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "35522:21:66"
            },
            "returnParameters": {
              "id": 20401,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20400,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 20435,
                  "src": "35566:4:66",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20399,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "35566:4:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "35565:6:66"
            },
            "scope": 20436,
            "src": "35503:366:66",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 20437,
        "src": "531:35340:66"
      }
    ],
    "src": "0:35872:66"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.2",
  "updatedAt": "2021-08-23T07:33:52.591Z",
  "devdoc": {
    "methods": {
      "constructor": {
        "details": "Constructor"
      },
      "executeBoosted(bytes32)": {
        "details": "executeBoosted try to execute a boosted or QuietEndingPeriod proposal if it is expired",
        "params": {
          "_proposalId": "the id of the proposal"
        },
        "return": "uint256 expirationCallBounty the bounty amount for the expiration call"
      },
      "getAllowedRangeOfChoices()": {
        "details": "getAllowedRangeOfChoices returns the allowed range of choices for a voting machine.",
        "return": "min - minimum number of choices max - maximum number of choices"
      },
      "getParametersHash(uint256[11],address)": {
        "details": "hashParameters returns a hash of the given parameters"
      },
      "isAbstainAllow()": {
        "details": "isAbstainAllow returns if the voting machine allow abstain (0)",
        "return": "bool true or false"
      },
      "propose(uint256,bytes32,address,address)": {
        "details": "register a new proposal with the given parameters. Every proposal has a unique ID which is being generated by calculating keccak256 of a incremented counter.",
        "params": {
          "_organization": "address",
          "_paramsHash": "parameters hash",
          "_proposer": "address"
        }
      },
      "redeem(bytes32,address)": {
        "details": "redeem a reward for a successful stake, vote or proposing. The function use a beneficiary address as a parameter (and not msg.sender) to enable users to redeem on behalf of someone else.",
        "params": {
          "_beneficiary": "- the beneficiary address",
          "_proposalId": "the ID of the proposal"
        },
        "return": "rewards -          [0] stakerTokenReward          [1] voterReputationReward          [2] proposerReputationReward"
      },
      "redeemDaoBounty(bytes32,address)": {
        "details": "redeemDaoBounty a reward for a successful stake. The function use a beneficiary address as a parameter (and not msg.sender) to enable users to redeem on behalf of someone else.",
        "params": {
          "_beneficiary": "- the beneficiary address",
          "_proposalId": "the ID of the proposal"
        },
        "return": "redeemedAmount - redeem token amountpotentialAmount - potential redeem token amount(if there is enough tokens bounty at the organization )"
      },
      "setParameters(uint256[11],address)": {
        "details": "hash the parameters, save them if necessary, and return the hash value",
        "params": {
          "_params": "a parameters array   _params[0] - _queuedVoteRequiredPercentage,   _params[1] - _queuedVotePeriodLimit, //the time limit for a proposal to be in an absolute voting mode.   _params[2] - _boostedVotePeriodLimit, //the time limit for a proposal to be in an relative voting mode.   _params[3] - _preBoostedVotePeriodLimit, //the time limit for a proposal to be in an preparation                 state (stable) before boosted.   _params[4] -_thresholdConst   _params[5] -_quietEndingPeriod   _params[6] -_proposingRepReward   _params[7] -_votersReputationLossRatio   _params[8] -_minimumDaoBounty   _params[9] -_daoBountyConst   _params[10] -_activationTime",
          "_voteOnBehalf": "- authorized to vote on behalf of others."
        }
      },
      "shouldBoost(bytes32)": {
        "details": "shouldBoost check if a proposal should be shifted to boosted phase.",
        "params": {
          "_proposalId": "the ID of the proposal"
        },
        "return": "bool true or false."
      },
      "threshold(bytes32,bytes32)": {
        "details": "threshold return the organization's score threshold which required by a proposal to shift to boosted state. This threshold is dynamically set and it depend on the number of boosted proposal.",
        "params": {
          "_organizationId": "the organization identifier",
          "_paramsHash": "the organization parameters hash"
        },
        "return": "uint256 organization's score threshold as real number."
      },
      "voteStatus(bytes32,uint256)": {
        "details": "voteStatus returns the reputation voted for a proposal for a specific voting choice.",
        "params": {
          "_choice": "the index in the",
          "_proposalId": "the ID of the proposal"
        },
        "return": "voted reputation for the given choice"
      }
    },
    "title": "GenesisProtocol implementation -an organization's voting machine scheme."
  },
  "userdoc": {
    "methods": {}
  }
}