{
  "contractName": "TieredElection",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getPool",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "activate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "b",
          "type": "address"
        }
      ],
      "name": "ballotExists",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "voteToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "removeAdmin",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "p",
          "type": "address"
        }
      ],
      "name": "poolExists",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "electionStartTime",
          "type": "uint256"
        },
        {
          "name": "electionEndTime",
          "type": "uint256"
        }
      ],
      "name": "setTimes",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "isAdmin",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "electionPhase",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "endTime",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "abort",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "p",
          "type": "address"
        }
      ],
      "name": "removePool",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "entry",
          "type": "bytes32"
        }
      ],
      "name": "addAuthorized",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "close",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "acct",
          "type": "address"
        }
      ],
      "name": "setVoteOwner",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "electionType",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "privateKey",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "removeSelf",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "entry",
          "type": "bytes32"
        }
      ],
      "name": "isAuthorized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "publicKey",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        }
      ],
      "name": "setPublicKey",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "addAdmin",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "entry",
          "type": "bytes32"
        }
      ],
      "name": "removeAuthorized",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "startTime",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "p",
          "type": "address"
        }
      ],
      "name": "getPoolIndex",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getPoolCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "withdrawVotes",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isLocked",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "unlock",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getBallotCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "allowVoteUpdates",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isClosed",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "b",
          "type": "address"
        }
      ],
      "name": "removeBallot",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "p",
          "type": "address"
        }
      ],
      "name": "addPool",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "b",
          "type": "address"
        }
      ],
      "name": "getBallotIndex",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "deductVote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "key",
          "type": "string"
        }
      ],
      "name": "setPrivateKey",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "withdrawAllVotes",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "checkConfig",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "lock",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "b",
          "type": "address"
        }
      ],
      "name": "addBallot",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getBallot",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "hashedUserId",
          "type": "bytes32"
        },
        {
          "name": "allowanceAddress",
          "type": "address"
        },
        {
          "name": "acct",
          "type": "address"
        },
        {
          "name": "allowUpdates",
          "type": "bool"
        },
        {
          "name": "revealer",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "KeyReleased",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Closed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Activated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Aborted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Locked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Unlocked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    }
  ],
  "bytecode": "0x60606040526003805461ffff191690556006805460ff1916905534156200002557600080fd5b60405160a08062001bf2833981016040528080519190602001805191906020018051919060200180519190602001805160008054600160a060020a03338116600160a060020a0319909216919091179091556003805491831662010000026201000060b060020a0319909216919091179055915085905084848484620000b98564010000000062000b446200017182021704565b506006805461010060a860020a031916610100600160a060020a039586160217905560078054600160a060020a031916929093169190911760a060020a60ff02191674010000000000000000000000000000000000000000911515919091021790555060408051908101604052600681527f5449455245440000000000000000000000000000000000000000000000000000602082015260089080516200016592916020019062000202565b505050505050620002a7565b6200018a33640100000000620009d1620001b182021704565b15156200019657600080fd5b6000908152600260205260409020805460ff19166001179055565b6000600160a060020a03821615801590620001fc5750600054600160a060020a0383811691161480620001fc5750600160a060020a03821660009081526001602052604090205460ff165b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200024557805160ff191683800117855562000275565b8280016001018555821562000275579182015b828111156200027557825182559160200191906001019062000258565b506200028392915062000287565b5090565b620002a491905b808211156200028357600081556001016200028e565b90565b61193b80620002b76000396000f3006060604052600436106102005763ffffffff60e060020a600035041663068bcd8d81146102055780630f15f4c014610237578063138b1fa01461024c578063160d66ae1461027f5780631785f53c146102925780631e1c6a07146102b157806322434836146102d057806324d7806c146102e9578063265050b6146103085780633197cbb61461033f57806335a063b4146103645780633b7d09461461037757806341af099d1461039657806343d726d6146103ac57806347beabd6146103bf5780634885c72a146103de57806349da5a0f146104685780635e898dac1461047b57806362f4ed901461048e57806363ffab31146104a45780636f6fc077146104b7578063704802751461050857806372e789b31461052757806378e979251461053d57806387063850146105505780638da5cb5b1461056f5780638eec5d7014610582578063961edb2514610595578063a4e2d634146105ab578063a69df4b5146105be578063b4741495146105d1578063bf41bf36146105e4578063c2b6b58c146105f7578063d71c67721461060a578063d914cd4b14610629578063db30eafb14610648578063de61a73214610667578063e0d4f0171461067a578063ee51d4e1146106cb578063f098fe47146106de578063f2fde38b146106f1578063f83d08ba14610710578063f8c74afa14610723578063f9d5ee7514610742575b600080fd5b341561021057600080fd5b61021b600435610758565b604051600160a060020a03909116815260200160405180910390f35b341561024257600080fd5b61024a6107d8565b005b341561025757600080fd5b61026b600160a060020a036004351661084f565b604051901515815260200160405180910390f35b341561028a57600080fd5b61021b6108b8565b341561029d57600080fd5b61024a600160a060020a03600435166108cc565b34156102bc57600080fd5b61026b600160a060020a0360043516610908565b34156102db57600080fd5b61024a600435602435610971565b34156102f457600080fd5b61026b600160a060020a03600435166109d1565b341561031357600080fd5b61031b610a20565b6040518082600381111561032b57fe5b60ff16815260200191505060405180910390f35b341561034a57600080fd5b610352610a2e565b60405190815260200160405180910390f35b341561036f57600080fd5b61024a610a34565b341561038257600080fd5b61024a600160a060020a0360043516610a85565b34156103a157600080fd5b61024a600435610b44565b34156103b757600080fd5b61024a610b73565b34156103ca57600080fd5b61024a600160a060020a0360043516610bf9565b34156103e957600080fd5b6103f1610c3c565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561042d578082015183820152602001610415565b50505050905090810190601f16801561045a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047357600080fd5b6103f1610cda565b341561048657600080fd5b61024a610d45565b341561049957600080fd5b61026b600435610d7b565b34156104af57600080fd5b6103f1610d90565b34156104c257600080fd5b61024a60046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610dfb95505050505050565b341561051357600080fd5b61024a600160a060020a0360043516610e33565b341561053257600080fd5b61024a600435610e75565b341561054857600080fd5b610352610ea1565b341561055b57600080fd5b610352600160a060020a0360043516610ea7565b341561057a57600080fd5b61021b610f10565b341561058d57600080fd5b610352610f1f565b34156105a057600080fd5b61024a600435610f99565b34156105b657600080fd5b61026b61103d565b34156105c957600080fd5b61024a611046565b34156105dc57600080fd5b6103526110a3565b34156105ef57600080fd5b61026b6110fd565b341561060257600080fd5b61026b61111e565b341561061557600080fd5b61024a600160a060020a036004351661113e565b341561063457600080fd5b61024a600160a060020a03600435166111e6565b341561065357600080fd5b610352600160a060020a036004351661128e565b341561067257600080fd5b61024a6112f7565b341561068557600080fd5b61024a60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061138d95505050505050565b34156106d657600080fd5b61024a6113f1565b34156106e957600080fd5b61026b6114fc565b34156106fc57600080fd5b61024a600160a060020a0360043516611501565b341561071b57600080fd5b61024a61159c565b341561072e57600080fd5b61024a600160a060020a03600435166115fb565b341561074d57600080fd5b61021b6004356116a3565b600073__AddressSet____________________________635c2125a7600e84846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156107b857600080fd5b6102c65a03f415156107c957600080fd5b50505060405180519392505050565b6107e061103d565b1580156108025750600060038054610100900460ff169081111561080057fe5b145b151561080d57600080fd5b610816336109d1565b151561082157600080fd5b6009541580156108315750600a54155b15610845574260098190556224ea0001600a555b61084d611703565b565b600073__AddressSet____________________________63758241e0600b84846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b15156107b857600080fd5b6006546101009004600160a060020a031681565b60005433600160a060020a039081169116146108e757600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b600073__AddressSet____________________________63758241e0600e84846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b15156107b857600080fd5b61097961103d565b15801561099b5750600060038054610100900460ff169081111561099957fe5b145b15156109a657600080fd5b6109af336109d1565b15156109ba57600080fd5b8181116109c657600080fd5b600991909155600a55565b6000600160a060020a03821615801590610a1a5750600054600160a060020a0383811691161480610a1a5750600160a060020a03821660009081526001602052604090205460ff165b92915050565b600354610100900460ff1681565b600a5481565b610a3d336109d1565b1515610a4857600080fd5b6003805461ff0019166103001790557f72c874aeff0b183a56e2b79c71b46e1aed4dee5e09862134b8821ba2fddbf8bf60405160405180910390a1565b610a8d61103d565b158015610aaf5750600060038054610100900460ff1690811115610aad57fe5b145b1515610aba57600080fd5b610ac3336109d1565b1515610ace57600080fd5b73__AddressSet____________________________63e134066a600e8360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b1515610b2d57600080fd5b6102c65a03f41515610b3e57600080fd5b50505050565b610b4d336109d1565b1515610b5857600080fd5b6000908152600260205260409020805460ff19166001179055565b610b7b61103d565b158015610b9d5750600160038054610100900460ff1690811115610b9b57fe5b145b1515610ba857600080fd5b610bb1336109d1565b1515610bbc57600080fd5b6003805461ff0019166102001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1565b610c02336109d1565b1515610c0d57600080fd5b6007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60088054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cd25780601f10610ca757610100808354040283529160200191610cd2565b820191906000526020600020905b815481529060010190602001808311610cb557829003601f168201915b505050505081565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cd25780601f10610ca757610100808354040283529160200191610cd2565b610d4e336109d1565b1515610d5957600080fd5b600160a060020a0333166000908152600160205260409020805460ff19169055565b60009081526002602052604090205460ff1690565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cd25780601f10610ca757610100808354040283529160200191610cd2565b60035433600160a060020a03908116620100009092041614610e1c57600080fd5b6004818051610e2f929160200190611877565b5050565b60005433600160a060020a03908116911614610e4e57600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b610e7e336109d1565b1515610e8957600080fd5b6000908152600260205260409020805460ff19169055565b60095481565b600073__AddressSet____________________________6318c40249600e84846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b15156107b857600080fd5b600054600160a060020a031681565b600073__AddressSet____________________________63913aa6cd600e836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b1515610f7957600080fd5b6102c65a03f41515610f8a57600080fd5b50505060405180519150505b90565b60075433600160a060020a03908116911614610fb457600080fd5b600654600754600160a060020a0361010090920482169163a9059cbb91168360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561101f57600080fd5b6102c65a03f1151561103057600080fd5b5050506040518051505050565b60035460ff1690565b61104f336109d1565b151561105a57600080fd5b60035460ff16151561106b57600080fd5b6003805460ff191690557f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd660405160405180910390a1565b600073__AddressSet____________________________63913aa6cd600b836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b1515610f7957600080fd5b60075474010000000000000000000000000000000000000000900460ff1681565b6000600260038054610100900460ff169081111561113857fe5b14905090565b61114661103d565b1580156111685750600060038054610100900460ff169081111561116657fe5b145b151561117357600080fd5b61117c336109d1565b151561118757600080fd5b73__AddressSet____________________________63e134066a600b8360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b1515610b2d57600080fd5b6111ee61103d565b1580156112105750600060038054610100900460ff169081111561120e57fe5b145b151561121b57600080fd5b611224336109d1565b151561122f57600080fd5b73__AddressSet____________________________63f9802f85600e8360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b1515610b2d57600080fd5b600073__AddressSet____________________________6318c40249600b84846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b15156107b857600080fd5b73__AddressSet____________________________63758241e0600e3360006040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561135f57600080fd5b6102c65a03f4151561137057600080fd5b50505060405180519050151561138557600080fd5b61084d61179c565b60035433600160a060020a039081166201000090920416146113ae57600080fd5b60058180516113c1929160200190611877565b507ff9d8c4f7f692590eaf6d41d6160024ffe0ce509fa752efcf47543eb851869cfb60405160405180910390a150565b60075433600160a060020a0390811691161461140c57600080fd5b600654600754600160a060020a0361010090920482169163a9059cbb9116826370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561147857600080fd5b6102c65a03f1151561148957600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156114df57600080fd5b6102c65a03f115156114f057600080fd5b50505060405180515050565b600190565b60005433600160a060020a0390811691161461151c57600080fd5b600160a060020a038116151561153157600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6115a5336109d1565b15156115b057600080fd5b60035460ff16156115c057600080fd5b6003805460ff191660011790557f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b60405160405180910390a1565b61160361103d565b1580156116255750600060038054610100900460ff169081111561162357fe5b145b151561163057600080fd5b611639336109d1565b151561164457600080fd5b73__AddressSet____________________________63f9802f85600b8360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b1515610b2d57600080fd5b600073__AddressSet____________________________635c2125a7600b84846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156107b857600080fd5b61170b61103d565b15801561172d5750600060038054610100900460ff169081111561172b57fe5b145b151561173857600080fd5b611741336109d1565b151561174c57600080fd5b6117546114fc565b151561175f57600080fd5b6003805461ff0019166101001790557fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b060405160405180910390a1565b6117a461103d565b1580156117c65750600160038054610100900460ff16908111156117c457fe5b145b15156117d157600080fd5b600954612a2f190142116117e457600080fd5b600a54612a300142106117f657600080fd5b60065460ff161561180657600080fd5b6006805460ff191660011790819055600160a060020a03610100909104166365775d156040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561185757600080fd5b6102c65a03f1151561186857600080fd5b50506006805460ff1916905550565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118b857805160ff19168380011785556118e5565b828001600101855582156118e5579182015b828111156118e55782518255916020019190600101906118ca565b506118f19291506118f5565b5090565b610f9691905b808211156118f157600081556001016118fb5600a165627a7a72305820f5978f1b9eaf40a02c05f8e9f80fc8e7ac11e6d7c04ba4fc50447cada3e8e3ff0029",
  "deployedBytecode": "0x6060604052600436106102005763ffffffff60e060020a600035041663068bcd8d81146102055780630f15f4c014610237578063138b1fa01461024c578063160d66ae1461027f5780631785f53c146102925780631e1c6a07146102b157806322434836146102d057806324d7806c146102e9578063265050b6146103085780633197cbb61461033f57806335a063b4146103645780633b7d09461461037757806341af099d1461039657806343d726d6146103ac57806347beabd6146103bf5780634885c72a146103de57806349da5a0f146104685780635e898dac1461047b57806362f4ed901461048e57806363ffab31146104a45780636f6fc077146104b7578063704802751461050857806372e789b31461052757806378e979251461053d57806387063850146105505780638da5cb5b1461056f5780638eec5d7014610582578063961edb2514610595578063a4e2d634146105ab578063a69df4b5146105be578063b4741495146105d1578063bf41bf36146105e4578063c2b6b58c146105f7578063d71c67721461060a578063d914cd4b14610629578063db30eafb14610648578063de61a73214610667578063e0d4f0171461067a578063ee51d4e1146106cb578063f098fe47146106de578063f2fde38b146106f1578063f83d08ba14610710578063f8c74afa14610723578063f9d5ee7514610742575b600080fd5b341561021057600080fd5b61021b600435610758565b604051600160a060020a03909116815260200160405180910390f35b341561024257600080fd5b61024a6107d8565b005b341561025757600080fd5b61026b600160a060020a036004351661084f565b604051901515815260200160405180910390f35b341561028a57600080fd5b61021b6108b8565b341561029d57600080fd5b61024a600160a060020a03600435166108cc565b34156102bc57600080fd5b61026b600160a060020a0360043516610908565b34156102db57600080fd5b61024a600435602435610971565b34156102f457600080fd5b61026b600160a060020a03600435166109d1565b341561031357600080fd5b61031b610a20565b6040518082600381111561032b57fe5b60ff16815260200191505060405180910390f35b341561034a57600080fd5b610352610a2e565b60405190815260200160405180910390f35b341561036f57600080fd5b61024a610a34565b341561038257600080fd5b61024a600160a060020a0360043516610a85565b34156103a157600080fd5b61024a600435610b44565b34156103b757600080fd5b61024a610b73565b34156103ca57600080fd5b61024a600160a060020a0360043516610bf9565b34156103e957600080fd5b6103f1610c3c565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561042d578082015183820152602001610415565b50505050905090810190601f16801561045a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047357600080fd5b6103f1610cda565b341561048657600080fd5b61024a610d45565b341561049957600080fd5b61026b600435610d7b565b34156104af57600080fd5b6103f1610d90565b34156104c257600080fd5b61024a60046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610dfb95505050505050565b341561051357600080fd5b61024a600160a060020a0360043516610e33565b341561053257600080fd5b61024a600435610e75565b341561054857600080fd5b610352610ea1565b341561055b57600080fd5b610352600160a060020a0360043516610ea7565b341561057a57600080fd5b61021b610f10565b341561058d57600080fd5b610352610f1f565b34156105a057600080fd5b61024a600435610f99565b34156105b657600080fd5b61026b61103d565b34156105c957600080fd5b61024a611046565b34156105dc57600080fd5b6103526110a3565b34156105ef57600080fd5b61026b6110fd565b341561060257600080fd5b61026b61111e565b341561061557600080fd5b61024a600160a060020a036004351661113e565b341561063457600080fd5b61024a600160a060020a03600435166111e6565b341561065357600080fd5b610352600160a060020a036004351661128e565b341561067257600080fd5b61024a6112f7565b341561068557600080fd5b61024a60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061138d95505050505050565b34156106d657600080fd5b61024a6113f1565b34156106e957600080fd5b61026b6114fc565b34156106fc57600080fd5b61024a600160a060020a0360043516611501565b341561071b57600080fd5b61024a61159c565b341561072e57600080fd5b61024a600160a060020a03600435166115fb565b341561074d57600080fd5b61021b6004356116a3565b600073__AddressSet____________________________635c2125a7600e84846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156107b857600080fd5b6102c65a03f415156107c957600080fd5b50505060405180519392505050565b6107e061103d565b1580156108025750600060038054610100900460ff169081111561080057fe5b145b151561080d57600080fd5b610816336109d1565b151561082157600080fd5b6009541580156108315750600a54155b15610845574260098190556224ea0001600a555b61084d611703565b565b600073__AddressSet____________________________63758241e0600b84846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b15156107b857600080fd5b6006546101009004600160a060020a031681565b60005433600160a060020a039081169116146108e757600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b600073__AddressSet____________________________63758241e0600e84846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b15156107b857600080fd5b61097961103d565b15801561099b5750600060038054610100900460ff169081111561099957fe5b145b15156109a657600080fd5b6109af336109d1565b15156109ba57600080fd5b8181116109c657600080fd5b600991909155600a55565b6000600160a060020a03821615801590610a1a5750600054600160a060020a0383811691161480610a1a5750600160a060020a03821660009081526001602052604090205460ff165b92915050565b600354610100900460ff1681565b600a5481565b610a3d336109d1565b1515610a4857600080fd5b6003805461ff0019166103001790557f72c874aeff0b183a56e2b79c71b46e1aed4dee5e09862134b8821ba2fddbf8bf60405160405180910390a1565b610a8d61103d565b158015610aaf5750600060038054610100900460ff1690811115610aad57fe5b145b1515610aba57600080fd5b610ac3336109d1565b1515610ace57600080fd5b73__AddressSet____________________________63e134066a600e8360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b1515610b2d57600080fd5b6102c65a03f41515610b3e57600080fd5b50505050565b610b4d336109d1565b1515610b5857600080fd5b6000908152600260205260409020805460ff19166001179055565b610b7b61103d565b158015610b9d5750600160038054610100900460ff1690811115610b9b57fe5b145b1515610ba857600080fd5b610bb1336109d1565b1515610bbc57600080fd5b6003805461ff0019166102001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1565b610c02336109d1565b1515610c0d57600080fd5b6007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60088054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cd25780601f10610ca757610100808354040283529160200191610cd2565b820191906000526020600020905b815481529060010190602001808311610cb557829003601f168201915b505050505081565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cd25780601f10610ca757610100808354040283529160200191610cd2565b610d4e336109d1565b1515610d5957600080fd5b600160a060020a0333166000908152600160205260409020805460ff19169055565b60009081526002602052604090205460ff1690565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cd25780601f10610ca757610100808354040283529160200191610cd2565b60035433600160a060020a03908116620100009092041614610e1c57600080fd5b6004818051610e2f929160200190611877565b5050565b60005433600160a060020a03908116911614610e4e57600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b610e7e336109d1565b1515610e8957600080fd5b6000908152600260205260409020805460ff19169055565b60095481565b600073__AddressSet____________________________6318c40249600e84846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b15156107b857600080fd5b600054600160a060020a031681565b600073__AddressSet____________________________63913aa6cd600e836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b1515610f7957600080fd5b6102c65a03f41515610f8a57600080fd5b50505060405180519150505b90565b60075433600160a060020a03908116911614610fb457600080fd5b600654600754600160a060020a0361010090920482169163a9059cbb91168360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561101f57600080fd5b6102c65a03f1151561103057600080fd5b5050506040518051505050565b60035460ff1690565b61104f336109d1565b151561105a57600080fd5b60035460ff16151561106b57600080fd5b6003805460ff191690557f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd660405160405180910390a1565b600073__AddressSet____________________________63913aa6cd600b836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b1515610f7957600080fd5b60075474010000000000000000000000000000000000000000900460ff1681565b6000600260038054610100900460ff169081111561113857fe5b14905090565b61114661103d565b1580156111685750600060038054610100900460ff169081111561116657fe5b145b151561117357600080fd5b61117c336109d1565b151561118757600080fd5b73__AddressSet____________________________63e134066a600b8360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b1515610b2d57600080fd5b6111ee61103d565b1580156112105750600060038054610100900460ff169081111561120e57fe5b145b151561121b57600080fd5b611224336109d1565b151561122f57600080fd5b73__AddressSet____________________________63f9802f85600e8360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b1515610b2d57600080fd5b600073__AddressSet____________________________6318c40249600b84846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b15156107b857600080fd5b73__AddressSet____________________________63758241e0600e3360006040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561135f57600080fd5b6102c65a03f4151561137057600080fd5b50505060405180519050151561138557600080fd5b61084d61179c565b60035433600160a060020a039081166201000090920416146113ae57600080fd5b60058180516113c1929160200190611877565b507ff9d8c4f7f692590eaf6d41d6160024ffe0ce509fa752efcf47543eb851869cfb60405160405180910390a150565b60075433600160a060020a0390811691161461140c57600080fd5b600654600754600160a060020a0361010090920482169163a9059cbb9116826370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561147857600080fd5b6102c65a03f1151561148957600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156114df57600080fd5b6102c65a03f115156114f057600080fd5b50505060405180515050565b600190565b60005433600160a060020a0390811691161461151c57600080fd5b600160a060020a038116151561153157600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6115a5336109d1565b15156115b057600080fd5b60035460ff16156115c057600080fd5b6003805460ff191660011790557f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b60405160405180910390a1565b61160361103d565b1580156116255750600060038054610100900460ff169081111561162357fe5b145b151561163057600080fd5b611639336109d1565b151561164457600080fd5b73__AddressSet____________________________63f9802f85600b8360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b1515610b2d57600080fd5b600073__AddressSet____________________________635c2125a7600b84846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156107b857600080fd5b61170b61103d565b15801561172d5750600060038054610100900460ff169081111561172b57fe5b145b151561173857600080fd5b611741336109d1565b151561174c57600080fd5b6117546114fc565b151561175f57600080fd5b6003805461ff0019166101001790557fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b060405160405180910390a1565b6117a461103d565b1580156117c65750600160038054610100900460ff16908111156117c457fe5b145b15156117d157600080fd5b600954612a2f190142116117e457600080fd5b600a54612a300142106117f657600080fd5b60065460ff161561180657600080fd5b6006805460ff191660011790819055600160a060020a03610100909104166365775d156040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561185757600080fd5b6102c65a03f1151561186857600080fd5b50506006805460ff1916905550565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118b857805160ff19168380011785556118e5565b828001600101855582156118e5579182015b828111156118e55782518255916020019190600101906118ca565b506118f19291506118f5565b5090565b610f9691905b808211156118f157600081556001016118fb5600a165627a7a72305820f5978f1b9eaf40a02c05f8e9f80fc8e7ac11e6d7c04ba4fc50447cada3e8e3ff0029",
  "sourceMap": "1176:1012:9:-;;;1183:22:16;;;-1:-1:-1;;1326:59:15;;;319:35:19;;;-1:-1:-1;;319:35:19;;;1511:290:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;494:5:21;:18;;-1:-1:-1;;;;;502:10:21;494:18;;-1:-1:-1;;;;;;494:18:21;;;;;;;;;;1385:8:11;:23;;;;;;;-1:-1:-1;;;;;;1385:23:11;;;;;;;;;1511:290:9;-1:-1:-1;1688:12:9;;-1:-1:-1;1702:16:9;1720:4;1726:12;1511:290;1709:27:3;1688:12:9;1709:13:3;;;;;;:27;:::i;:::-;-1:-1:-1;1746:9:3;:38;;-1:-1:-1;;;;;;1746:38:3;;-1:-1:-1;;;;;1746:38:3;;;;;;;1794:9;:16;;-1:-1:-1;;;;;;1794:16:3;;;;;;;;;-1:-1:-1;;;;;;1820:31:3;;;;;;;;;;;;-1:-1:-1;1771:23:9;;;;;;;;;;;;;;;;:12;;:23;;;;;;;;;:::i;:::-;;1511:290;;;;;1176:1012;;1240:92:1;1168:19:0;1176:10;1168:7;;;;;;:19;:::i;:::-;1160:28;;;;;;;;1301:17:1;;;;:10;:17;;;;;:24;;-1:-1:-1;;1301:24:1;1321:4;1301:24;;;1240:92::o;1212:145:0:-;1268:4;-1:-1:-1;;;;;1291:18:0;;;;;;:59;;-1:-1:-1;1322:5:0;;-1:-1:-1;;;;;1314:13:0;;;1322:5;;1314:13;;:35;;-1:-1:-1;;;;;;1331:18:0;;;;;;:12;:18;;;;;;;;1314:35;1284:66;1212:145;-1:-1:-1;;1212:145:0:o;1176:1012:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1176:1012:9;;;-1:-1:-1;1176:1012:9;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "1176:1012:9:-;;;;;;;;;-1:-1:-1;;;1176:1012:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1411:109:6;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1411:109:6;;;;;;;;;;;;;;1998:199:3;;;;;;;;;;;;;;1836:109:5;;;;;;;;;;-1:-1:-1;;;;;1836:109:5;;;;;;;;;;;;;;;;;;;;;;1333:21:3;;;;;;;;;;;;1460:95:0;;;;;;;;;;-1:-1:-1;;;;;1460:95:0;;;;;1808:105:6;;;;;;;;;;-1:-1:-1;;;;;1808:105:6;;;;;2203:221:3;;;;;;;;;;;;;;;;1212:145:0;;;;;;;;;;-1:-1:-1;;;;;1212:145:0;;;;;1326:59:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1476:19:3;;;;;;;;;;;;;;;;;;;;;;;;;;;2274:103:15;;;;;;;;;;;;1715:87:6;;;;;;;;;;-1:-1:-1;;;;;1715:87:6;;;;;1240:92:1;;;;;;;;;;;;;;2160:108:15;;;;;;;;;;;;2430:82:3;;;;;;;;;;-1:-1:-1;;;;;2430:82:3;;;;;1417:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;71:3;;;64:6;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:24:11;;;;;;;;;;;;1561:84:0;;;;;;;;;;;;1125:109:1;;;;;;;;;;;;;;1267:23:11;;;;;;;;;;;;1595:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1595:86:11;;-1:-1:-1;1595:86:11;;-1:-1:-1;;;;;;1595:86:11;1363:91:0;;;;;;;;;;-1:-1:-1;;;;;1363:91:0;;;;;1338:96:1;;;;;;;;;;;;;;1449:21:3;;;;;;;;;;;;1296:109:6;;;;;;;;;;-1:-1:-1;;;;;1296:109:6;;;;;238:20:21;;;;;;;;;;;;1526:96:6;;;;;;;;;;;;2674:140:3;;;;;;;;;;;;;;1355:84:16;;;;;;;;;;;;1540:92;;;;;;;;;;;;1542:100:5;;;;;;;;;;;;1383:28:3;;;;;;;;;;;;1720:112:15;;;;;;;;;;;;1739:91:5;;;;;;;;;;-1:-1:-1;;;;;1739:91:5;;;;;1628:81:6;;;;;;;;;;-1:-1:-1;;;;;1628:81:6;;;;;1304:113:5;;;;;;;;;;-1:-1:-1;;;;;1304:113:5;;;;;2108:78:9;;;;;;;;;;;;1773:111:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1773:111:11;;-1:-1:-1;1773:111:11;;-1:-1:-1;;;;;;1773:111:11;2518:150:3;;;;;;;;;;;;1807:149:9;;;;;;;;;;;;827:169:21;;;;;;;;;;-1:-1:-1;;;;;827:169:21;;;;;1445:89:16;;;;;;;;;;;;1648:85:5;;;;;;;;;;-1:-1:-1;;;;;1648:85:5;;;;;1423:113;;;;;;;;;;;;;;1411:109:6;1467:7;1493:13;;:7;1507:5;1467:7;1493:20;;;;;;;-1:-1:-1;;;1493:20:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1411:109;-1:-1:-1;;;1411:109:6:o;1998:199:3:-;1529:10:15;:8;:10::i;:::-;1528:11;:54;;;;-1:-1:-1;1560:22:15;1543:13;;;;;;;;;:39;;;;;;;;1528:54;1520:63;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;2054:9:3;;:14;:30;;;;-1:-1:-1;2072:7:3;;:12;2054:30;2050:115;;;2112:3;2100:9;:15;;;2146:7;2139:15;2129:7;:25;2050:115;2174:16;:14;:16::i;:::-;1998:199::o;1836:109:5:-;1894:4;1917:18;;:9;1936:1;1894:4;1917:21;;;;;;;-1:-1:-1;;;1917:21:5;;;;;;;;;;;;;-1:-1:-1;;;;;1917:21:5;;;;;;;;;;;;;;;;;;;;;;;;1333::3;;;;;;-1:-1:-1;;;;;1333:21:3;;:::o;1460:95:0:-;647:5:21;;633:10;-1:-1:-1;;;;;633:19:21;;;647:5;;633:19;625:28;;;;;;-1:-1:-1;;;;;1522:18:0;1543:5;1522:18;;;:12;:18;;;;;:26;;-1:-1:-1;;1522:26:0;;;1460:95::o;1808:105:6:-;1864:4;1887:16;;:7;1904:1;1864:4;1887:19;;;;;;;-1:-1:-1;;;1887:19:6;;;;;;;;;;;;;-1:-1:-1;;;;;1887:19:6;;;;;;;;;;;;;;;;;;;;;;;;2203:221:3;1529:10:15;:8;:10::i;:::-;1528:11;:54;;;;-1:-1:-1;1560:22:15;1543:13;;;;;;;;;:39;;;;;;;;1528:54;1520:63;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;2307:35:3;;;2299:44;;;;;;2353:9;:29;;;;2392:7;:25;2203:221::o;1212:145:0:-;1268:4;-1:-1:-1;;;;;1291:18:0;;;;;;:59;;-1:-1:-1;1322:5:0;;-1:-1:-1;;;;;1314:13:0;;;1322:5;;1314:13;;:35;;-1:-1:-1;;;;;;1331:18:0;;;;;;:12;:18;;;;;;;;1314:35;1284:66;1212:145;-1:-1:-1;;1212:145:0:o;1326:59:15:-;;;;;;;;;:::o;1476:19:3:-;;;;:::o;2274:103:15:-;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;2330:21:15;2314:37;;-1:-1:-1;;2314:37:15;;;;;2361:9;;;;;;;;;;2274:103::o;1715:87:6:-;1529:10:15;:8;:10::i;:::-;1528:11;:54;;;;-1:-1:-1;1560:22:15;1543:13;;;;;;;;;:39;;;;;;;;1528:54;1520:63;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1778:14:6;;:7;1793:1;1778:17;;-1:-1:-1;;;1778:17:6;;;;;;;;;;;;;-1:-1:-1;;;;;1778:17:6;;;;;;;-1:-1:-1;1778:17:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1715:87;:::o;1240:92:1:-;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1301:17:1;;;;:10;:17;;;;;:24;;-1:-1:-1;;1301:24:1;1321:4;1301:24;;;1240:92::o;2160:108:15:-;1644:10;:8;:10::i;:::-;1643:11;:52;;;;-1:-1:-1;1675:20:15;1658:13;;;;;;;;;:37;;;;;;;;1643:52;1635:61;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;2207:13:15;:36;;-1:-1:-1;;2207:36:15;;;;;2253:8;;;;;;;;;;2160:108::o;2430:82:3:-;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;2489:9:3;:16;;-1:-1:-1;;2489:16:3;-1:-1:-1;;;;;2489:16:3;;;;;;;;;;2430:82::o;1417:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1296:24:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1561:84:0;1168:19;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;-1:-1:-1;;;;;1619:10:0;1606:24;1633:5;1606:24;;;:12;:24;;;;;:32;;-1:-1:-1;;1606:32:0;;;1561:84::o;1125:109:1:-;1187:4;1210:17;;;:10;:17;;;;;;;;;1125:109::o;1267:23:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1595:86;1476:8;;1462:10;-1:-1:-1;;;;;1462:22:11;;;1476:8;;;;;1462:22;1454:31;;;;;;1659:9;1671:3;;1659:15;;;;;;;;:::i;:::-;;1595:86;:::o;1363:91:0:-;647:5:21;;633:10;-1:-1:-1;;;;;633:19:21;;;647:5;;633:19;625:28;;;;;;-1:-1:-1;;;;;1422:18:0;;;;;1443:4;1422:18;;;;;;;;:25;;-1:-1:-1;;1422:25:0;;;;;;1363:91::o;1338:96:1:-;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1422:5:1;1402:17;;;:10;:17;;;;;:25;;-1:-1:-1;;1402:25:1;;;1338:96::o;1449:21:3:-;;;;:::o;1296:109:6:-;1354:7;1380:15;;:7;1396:1;1354:7;1380:18;;;;;;;-1:-1:-1;;;1380:18:6;;;;;;;;;;;;;-1:-1:-1;;;;;1380:18:6;;;;;;;;;;;;;;;;;;;;;;;;238:20:21;;;-1:-1:-1;;;;;238:20:21;;:::o;1526:96:6:-;1575:7;1601:12;;:7;1575;1601:14;;;;;;;-1:-1:-1;;;1601:14:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1526:96:6;;:::o;2674:140:3:-;2751:9;;2737:10;-1:-1:-1;;;;;2737:23:3;;;2751:9;;2737:23;2729:32;;;;;;2771:9;;2790;;-1:-1:-1;;;;;2771:9:3;;;;;;;:18;;2790:9;2801:5;2790:9;2771:36;;;;;;;-1:-1:-1;;;2771:36:3;;;;;;-1:-1:-1;;;;;2771:36:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2674:140:3:o;1355:84:16:-;1423:9;;;;1355:84;:::o;1540:92::-;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1248:9:16;;;;1240:18;;;;;;;;1588:9;:17;;-1:-1:-1;;1588:17:16;;;1615:10;;;;;;;;;;1540:92::o;1542:100:5:-;1593:7;1619:14;;:9;1593:7;1619:16;;;;;;;-1:-1:-1;;;1619:16:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1383:28:3;;;;;;;;;:::o;1720:112:15:-;1765:4;1805:20;1788:13;;;;;;;;;:37;;;;;;;;1781:44;;1720:112;:::o;1739:91:5:-;1529:10:15;:8;:10::i;:::-;1528:11;:54;;;;-1:-1:-1;1560:22:15;1543:13;;;;;;;;;:39;;;;;;;;1528:54;1520:63;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1804:16:5;;:9;1821:1;1804:19;;-1:-1:-1;;;1804:19:5;;;;;;;;;;;;;-1:-1:-1;;;;;1804:19:5;;;;;;;-1:-1:-1;1804:19:5;;;;;;;;;;;;;;;;1628:81:6;1529:10:15;:8;:10::i;:::-;1528:11;:54;;;;-1:-1:-1;1560:22:15;1543:13;;;;;;;;;:39;;;;;;;;1528:54;1520:63;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1688:11:6;;:7;1700:1;1688:14;;-1:-1:-1;;;1688:14:6;;;;;;;;;;;;;-1:-1:-1;;;;;1688:14:6;;;;;;;-1:-1:-1;1688:14:6;;;;;;;;;;;;;;;;1304:113:5;1364:7;1390:17;;:9;1408:1;1364:7;1390:20;;;;;;;-1:-1:-1;;;1390:20:5;;;;;;;;;;;;;-1:-1:-1;;;;;1390:20:5;;;;;;;;;;;;;;;;;;;;;;;;2108:78:9;2055:16;;:7;2072:10;2055:28;;;;;;;;-1:-1:-1;;;2055:28:9;;;;;;;;;;;;;-1:-1:-1;;;;;2055:28:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2047:37;;;;;;;;2161:18;:16;:18::i;1773:111:11:-;1476:8;;1462:10;-1:-1:-1;;;;;1462:22:11;;;1476:8;;;;;1462:22;1454:31;;;;;;1838:10;1851:3;;1838:16;;;;;;;;:::i;:::-;;1864:13;;;;;;;;;;1773:111;:::o;2518:150:3:-;2585:9;;2571:10;-1:-1:-1;;;;;2571:23:3;;;2585:9;;2571:23;2563:32;;;;;;2605:9;;2624;;-1:-1:-1;;;;;2605:9:3;;;;;;;:18;;2624:9;2605;2635:19;2655:4;2624:9;2635:25;;;;;;;-1:-1:-1;;;2635:25:3;;;;;;-1:-1:-1;;;;;2635:25:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2605:56;;;;;;;;-1:-1:-1;;;2605:56:3;;;;;;-1:-1:-1;;;;;2605:56:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2518:150:3:o;1807:149:9:-;1945:4;1807:149;:::o;827:169:21:-;647:5;;633:10;-1:-1:-1;;;;;633:19:21;;;647:5;;633:19;625:28;;;;;;-1:-1:-1;;;;;903:22:21;;;;895:31;;;;;;953:5;;-1:-1:-1;;;;;932:37:21;;;;953:5;932:37;;;;;;;;;;975:5;:16;;-1:-1:-1;;975:16:21;-1:-1:-1;;;;;975:16:21;;;;;;;;;;827:169::o;1445:89:16:-;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1321:9:16;;;;1320:10;1312:19;;;;;;1493:9;:16;;-1:-1:-1;;1493:16:16;1505:4;1493:16;;;1519:8;;;;;;;;;;1445:89::o;1648:85:5:-;1529:10:15;:8;:10::i;:::-;1528:11;:54;;;;-1:-1:-1;1560:22:15;1543:13;;;;;;;;;:39;;;;;;;;1528:54;1520:63;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1710:13:5;;:9;1724:1;1710:16;;-1:-1:-1;;;1710:16:5;;;;;;;;;;;;;-1:-1:-1;;;;;1710:16:5;;;;;;;-1:-1:-1;1710:16:5;;;;;;;;;;;;;;;;1423:113;1481:7;1507:15;;:9;1523:5;1481:7;1507:22;;;;;;;-1:-1:-1;;;1507:22:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2006:148:15;1529:10;:8;:10::i;:::-;1528:11;:54;;;;-1:-1:-1;1560:22:15;1543:13;;;;;;;;;:39;;;;;;;;1528:54;1520:63;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;2066:13:15;:11;:13::i;:::-;2058:22;;;;;;;;2090:13;:36;;-1:-1:-1;;2090:36:15;;;;;2136:11;;;;;;;;;;2006:148::o;2820:97:3:-;1644:10:15;:8;:10::i;:::-;1643:11;:52;;;;-1:-1:-1;1675:20:15;1658:13;;;;;;;;;:37;;;;;;;;1643:52;1635:61;;;;;;;;1909:9:3;;-1:-1:-1;;1909:19:3;1902:3;:27;1894:36;;;;;;1955:7;;1965;1955:17;1948:3;:25;1940:34;;;;;;780:14:19;;;;779:15;771:24;;;;;;801:14;:21;;-1:-1:-1;;801:21:19;818:4;801:21;;;;;-1:-1:-1;;;;;801:21:19;2889:9:3;;;;:19;:21;;;;;-1:-1:-1;;;2889:21:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;835:14:19;:22;;-1:-1:-1;;835:22:19;;;-1:-1:-1;2820:97:3:o;1176:1012:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1176:1012:9;;;-1:-1:-1;1176:1012:9;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;",
  "source": "// ------------------------------------------------------------------------------\n// This file is part of netvote.\n//\n// netvote is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// netvote is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with solidity.  If not, see <http://www.gnu.org/licenses/>\n//\n// (c) 2017 netvote contributors.\n//------------------------------------------------------------------------------\n\npragma solidity ^0.4.17;\n\nimport \"../links/BallotRegistry.sol\";\nimport \"../links/PoolRegistry.sol\";\nimport \"../BaseElection.sol\";\n\n\n/**\n * @title TieredElection\n * @dev This allows one to map many ballots and pools into a single election.\n * Only registered pools are allowed to transact vote allowance.\n */\ncontract TieredElection is BaseElection, BallotRegistry, PoolRegistry {\n\n    /**\n     * @dev Create an election\n     * @param allowanceAddress address of Netvote VoteAllowance contract\n     * @param acct address of account from whom to deduct votes from\n     * @param allowUpdates allow voters to update votes after voting\n     */\n    function TieredElection(\n        bytes32 hashedUserId,\n        address allowanceAddress,\n        address acct,\n        bool allowUpdates,\n        address revealer) BaseElection(hashedUserId, allowanceAddress, acct, allowUpdates, revealer) public\n    {\n        electionType = \"TIERED\";\n    }\n\n    function checkConfig() public constant returns (bool) {\n        //TODO: implement confirmation that election is configured\n        return true;\n    }\n\n    //only allow pools that are listed explicitly\n    modifier poolIsAllowed() {\n        require(poolSet.contains(msg.sender));\n        _;\n    }\n\n    function deductVote() public poolIsAllowed {\n        super.deductVote();\n    }\n}",
  "sourcePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/tiered/TieredElection.sol",
  "ast": {
    "attributes": {
      "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/tiered/TieredElection.sol",
      "exportedSymbols": {
        "TieredElection": [
          1326
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.4",
            ".17"
          ]
        },
        "id": 1260,
        "name": "PragmaDirective",
        "src": "868:24:9"
      },
      {
        "attributes": {
          "SourceUnit": 708,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/links/BallotRegistry.sol",
          "file": "../links/BallotRegistry.sol",
          "scope": 1327,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 1261,
        "name": "ImportDirective",
        "src": "894:37:9"
      },
      {
        "attributes": {
          "SourceUnit": 801,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/links/PoolRegistry.sol",
          "file": "../links/PoolRegistry.sol",
          "scope": 1327,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 1262,
        "name": "ImportDirective",
        "src": "932:35:9"
      },
      {
        "attributes": {
          "SourceUnit": 372,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/BaseElection.sol",
          "file": "../BaseElection.sol",
          "scope": 1327,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 1263,
        "name": "ImportDirective",
        "src": "968:29:9"
      },
      {
        "attributes": {
          "contractDependencies": [
            84,
            134,
            371,
            707,
            800,
            1542,
            2129,
            2197,
            2552,
            2703
          ],
          "contractKind": "contract",
          "documentation": "@title TieredElection\n@dev This allows one to map many ballots and pools into a single election.\nOnly registered pools are allowed to transact vote allowance.",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            1326,
            800,
            707,
            371,
            2552,
            1542,
            2129,
            2197,
            134,
            84,
            2703
          ],
          "name": "TieredElection",
          "scope": 1327
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "BaseElection",
                  "referencedDeclaration": 371,
                  "type": "contract BaseElection"
                },
                "id": 1264,
                "name": "UserDefinedTypeName",
                "src": "1203:12:9"
              }
            ],
            "id": 1265,
            "name": "InheritanceSpecifier",
            "src": "1203:12:9"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "BallotRegistry",
                  "referencedDeclaration": 707,
                  "type": "contract BallotRegistry"
                },
                "id": 1266,
                "name": "UserDefinedTypeName",
                "src": "1217:14:9"
              }
            ],
            "id": 1267,
            "name": "InheritanceSpecifier",
            "src": "1217:14:9"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "PoolRegistry",
                  "referencedDeclaration": 800,
                  "type": "contract PoolRegistry"
                },
                "id": 1268,
                "name": "UserDefinedTypeName",
                "src": "1233:12:9"
              }
            ],
            "id": 1269,
            "name": "InheritanceSpecifier",
            "src": "1233:12:9"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": true,
              "name": "TieredElection",
              "payable": false,
              "scope": 1326,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "hashedUserId",
                      "scope": 1294,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1270,
                        "name": "ElementaryTypeName",
                        "src": "1544:7:9"
                      }
                    ],
                    "id": 1271,
                    "name": "VariableDeclaration",
                    "src": "1544:20:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "allowanceAddress",
                      "scope": 1294,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 1272,
                        "name": "ElementaryTypeName",
                        "src": "1574:7:9"
                      }
                    ],
                    "id": 1273,
                    "name": "VariableDeclaration",
                    "src": "1574:24:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "acct",
                      "scope": 1294,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 1274,
                        "name": "ElementaryTypeName",
                        "src": "1608:7:9"
                      }
                    ],
                    "id": 1275,
                    "name": "VariableDeclaration",
                    "src": "1608:12:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "allowUpdates",
                      "scope": 1294,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1276,
                        "name": "ElementaryTypeName",
                        "src": "1630:4:9"
                      }
                    ],
                    "id": 1277,
                    "name": "VariableDeclaration",
                    "src": "1630:17:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "revealer",
                      "scope": 1294,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 1278,
                        "name": "ElementaryTypeName",
                        "src": "1657:7:9"
                      }
                    ],
                    "id": 1279,
                    "name": "VariableDeclaration",
                    "src": "1657:16:9"
                  }
                ],
                "id": 1280,
                "name": "ParameterList",
                "src": "1534:140:9"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1288,
                "name": "ParameterList",
                "src": "1761:0:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 371,
                      "type": "type(contract BaseElection)",
                      "value": "BaseElection"
                    },
                    "id": 1281,
                    "name": "Identifier",
                    "src": "1675:12:9"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1271,
                      "type": "bytes32",
                      "value": "hashedUserId"
                    },
                    "id": 1282,
                    "name": "Identifier",
                    "src": "1688:12:9"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1273,
                      "type": "address",
                      "value": "allowanceAddress"
                    },
                    "id": 1283,
                    "name": "Identifier",
                    "src": "1702:16:9"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1275,
                      "type": "address",
                      "value": "acct"
                    },
                    "id": 1284,
                    "name": "Identifier",
                    "src": "1720:4:9"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1277,
                      "type": "bool",
                      "value": "allowUpdates"
                    },
                    "id": 1285,
                    "name": "Identifier",
                    "src": "1726:12:9"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1279,
                      "type": "address",
                      "value": "revealer"
                    },
                    "id": 1286,
                    "name": "Identifier",
                    "src": "1740:8:9"
                  }
                ],
                "id": 1287,
                "name": "ModifierInvocation",
                "src": "1675:74:9"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "string storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 182,
                              "type": "string storage ref",
                              "value": "electionType"
                            },
                            "id": 1289,
                            "name": "Identifier",
                            "src": "1771:12:9"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "544945524544",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"TIERED\"",
                              "value": "TIERED"
                            },
                            "id": 1290,
                            "name": "Literal",
                            "src": "1786:8:9"
                          }
                        ],
                        "id": 1291,
                        "name": "Assignment",
                        "src": "1771:23:9"
                      }
                    ],
                    "id": 1292,
                    "name": "ExpressionStatement",
                    "src": "1771:23:9"
                  }
                ],
                "id": 1293,
                "name": "Block",
                "src": "1761:40:9"
              }
            ],
            "id": 1294,
            "name": "FunctionDefinition",
            "src": "1511:290:9"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "checkConfig",
              "payable": false,
              "scope": 1326,
              "stateMutability": "view",
              "superFunction": 2077,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1295,
                "name": "ParameterList",
                "src": "1827:2:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1302,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1296,
                        "name": "ElementaryTypeName",
                        "src": "1855:4:9"
                      }
                    ],
                    "id": 1297,
                    "name": "VariableDeclaration",
                    "src": "1855:4:9"
                  }
                ],
                "id": 1298,
                "name": "ParameterList",
                "src": "1854:6:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1298
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 1299,
                        "name": "Literal",
                        "src": "1945:4:9"
                      }
                    ],
                    "id": 1300,
                    "name": "Return",
                    "src": "1938:11:9"
                  }
                ],
                "id": 1301,
                "name": "Block",
                "src": "1861:95:9"
              }
            ],
            "id": 1302,
            "name": "FunctionDefinition",
            "src": "1807:149:9"
          },
          {
            "attributes": {
              "name": "poolIsAllowed",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1303,
                "name": "ParameterList",
                "src": "2034:2:9"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3241,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 1304,
                            "name": "Identifier",
                            "src": "2047:7:9"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "contains",
                                  "referencedDeclaration": 1601,
                                  "type": "function (struct AddressSet.SetData storage pointer,address) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 718,
                                      "type": "struct AddressSet.SetData storage ref",
                                      "value": "poolSet"
                                    },
                                    "id": 1305,
                                    "name": "Identifier",
                                    "src": "2055:7:9"
                                  }
                                ],
                                "id": 1306,
                                "name": "MemberAccess",
                                "src": "2055:16:9"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3238,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 1307,
                                    "name": "Identifier",
                                    "src": "2072:3:9"
                                  }
                                ],
                                "id": 1308,
                                "name": "MemberAccess",
                                "src": "2072:10:9"
                              }
                            ],
                            "id": 1309,
                            "name": "FunctionCall",
                            "src": "2055:28:9"
                          }
                        ],
                        "id": 1310,
                        "name": "FunctionCall",
                        "src": "2047:37:9"
                      }
                    ],
                    "id": 1311,
                    "name": "ExpressionStatement",
                    "src": "2047:37:9"
                  },
                  {
                    "id": 1312,
                    "name": "PlaceholderStatement",
                    "src": "2094:1:9"
                  }
                ],
                "id": 1313,
                "name": "Block",
                "src": "2037:65:9"
              }
            ],
            "id": 1314,
            "name": "ModifierDefinition",
            "src": "2012:90:9"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "deductVote",
              "payable": false,
              "scope": 1326,
              "stateMutability": "nonpayable",
              "superFunction": 370,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1315,
                "name": "ParameterList",
                "src": "2127:2:9"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1318,
                "name": "ParameterList",
                "src": "2151:0:9"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1314,
                      "type": "modifier ()",
                      "value": "poolIsAllowed"
                    },
                    "id": 1316,
                    "name": "Identifier",
                    "src": "2137:13:9"
                  }
                ],
                "id": 1317,
                "name": "ModifierInvocation",
                "src": "2137:13:9"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "deductVote",
                              "referencedDeclaration": 370,
                              "type": "function ()"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3300,
                                  "type": "contract super TieredElection",
                                  "value": "super"
                                },
                                "id": 1319,
                                "name": "Identifier",
                                "src": "2161:5:9"
                              }
                            ],
                            "id": 1321,
                            "name": "MemberAccess",
                            "src": "2161:16:9"
                          }
                        ],
                        "id": 1322,
                        "name": "FunctionCall",
                        "src": "2161:18:9"
                      }
                    ],
                    "id": 1323,
                    "name": "ExpressionStatement",
                    "src": "2161:18:9"
                  }
                ],
                "id": 1324,
                "name": "Block",
                "src": "2151:35:9"
              }
            ],
            "id": 1325,
            "name": "FunctionDefinition",
            "src": "2108:78:9"
          }
        ],
        "id": 1326,
        "name": "ContractDefinition",
        "src": "1176:1012:9"
      }
    ],
    "id": 1327,
    "name": "SourceUnit",
    "src": "868:1320:9"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {
        "AddressSet": "0xab6f805fb7754d19f82eb8fce07cf70f10c7a620"
      }
    }
  },
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-26T15:57:59.449Z"
}