UNPKG

@daostack/infra

Version:

Base layer DAO's components

1,429 lines 103 kB
{ "contractName": "GenesisProtocol", "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": "DELEGATION_HASH_EIP712", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "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": true, "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "calcExecuteCallBounty", "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": "execute", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "", "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": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "getProposalOrganization", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "getProposalTimes", "outputs": [ { "internalType": "uint256[3]", "name": "times", "type": "uint256[3]" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" }, { "internalType": "address", "name": "_staker", "type": "address" } ], "name": "getStaker", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "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": "_proposalId", "type": "bytes32" } ], "name": "proposalStatus", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "secondsFromTimeOutTillExecuteBoosted", "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": true, "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "score", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "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": false, "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" }, { "internalType": "uint256", "name": "_vote", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "stake", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" }, { "internalType": "uint256", "name": "_vote", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "uint256", "name": "_nonce", "type": "uint256" }, { "internalType": "uint256", "name": "_signatureType", "type": "uint256" }, { "internalType": "bytes", "name": "_signature", "type": "bytes" } ], "name": "stakeWithSignature", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "stakesNonce", "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": true, "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "state", "outputs": [ { "internalType": "enum GenesisProtocolLogic.ProposalState", "name": "", "type": "uint8" } ], "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": "_amount", "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": "address", "name": "_voter", "type": "address" } ], "name": "voteInfo", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" }, { "internalType": "uint256", "name": "_vote", "type": "uint256" } ], "name": "voteStake", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "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": true, "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "winningVote", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040523480156200001157600080fd5b506040516200468238038062004682833981810160405260208110156200003757600080fd5b5051806200006573543ff227f64aa17ea132bf9886cab5db55dcaddf620000bb602090811b6200441317901c565b156200009757600680546001600160a01b03191673543ff227f64aa17ea132bf9886cab5db55dcaddf179055620000b3565b600680546001600160a01b0319166001600160a01b0383161790555b5050620000f8565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590620000f057508115155b949350505050565b61457a80620001086000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372f702f31161013b578063b4512913116100b8578063c8f526e81161007c578063c8f526e814610887578063cc3bf9e9146108dc578063e5af18c514610908578063e751f27114610925578063fb6c0cbb1461094257610248565b8063b4512913146107f0578063ba51b14e14610813578063bb5a05ed14610830578063beda80151461084d578063c08351061461086a57610248565b80639525c0cc116100ff5780639525c0cc146107865780639bc5689d14610347578063a003651d146107a5578063a05ea6e4146107c2578063b2449d65146107e857610248565b806372f702f31461069c57806379a1c1f6146106c057806380f5e0a11461070357806388737b5e146107205780638894c41b1461075a57610248565b806332ed5b12116101c95780635142bc1e1161018d5780635142bc1e146105fc57806351d997b21461060457806361d585da1461060c5780636359036b1461064d578063707437681461067957610248565b806332ed5b121461044d578063359afa49146104fb5780633c133818146105335780634047487314610550578063488c65fc1461056d57610248565b80631702ef0c116102105780631702ef0c146103c057806321b4b3dc146103dd5780632d598e58146103e55780632daedd521461040857806330ca0a531461044557610248565b8063025068041461024d57806307b4e1e3146102d85780630d48344214610347578063119ce91b1461034f57806316db517214610394575b600080fd5b61026a6004803603602081101561026357600080fd5b503561095f565b604080519d8e5260208e019c909c528c8c019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e08801526101008701526101208601526101408501526101608401526001600160a01b031661018083015251908190036101a00190f35b61033560048036036101808110156102ef57600080fd5b81019080806101600190600b806020026040519081016040528092919082600b602002808284376000920191909152509194505050356001600160a01b031690506109cf565b60408051918252519081900360200190f35b610335610ae0565b61037b6004803603604081101561036557600080fd5b50803590602001356001600160a01b0316610ae5565b6040805192835260208301919091528051918290030190f35b61037b600480360360408110156103aa57600080fd5b50803590602001356001600160a01b0316610b48565b610335600480360360208110156103d657600080fd5b5035610b79565b610335610b8b565b610335600480360360408110156103fb57600080fd5b5080359060200135610b91565b6104316004803603606081101561041e57600080fd5b5080359060208101359060400135610bde565b604080519115158252519081900360200190f35b610335610bf4565b61046a6004803603602081101561046357600080fd5b5035610ca0565b604080518e81526001600160a01b038e1660208201529081018c600681111561048f57fe5b60ff168152602081019b909b52506001600160a01b039098166040808b019190915260608a0197909752608089019590955260a088019390935260c087019190915260e08601526101008501526101208401529015156101408301525190819003610160019350915050f35b6104316004803603608081101561051157600080fd5b50803590602081013590604081013590606001356001600160a01b0316610d0e565b6103356004803603602081101561054957600080fd5b5035610ea7565b6103356004803603602081101561056657600080fd5b5035610ebc565b610431600480360360c081101561058357600080fd5b8135916020810135916040820135916060810135916080820135919081019060c0810160a08201356401000000008111156105bd57600080fd5b8201836020820111156105cf57600080fd5b803590602001918460018302840111640100000000831117156105f157600080fd5b509092509050610f2c565b61037b6111fe565b610431611206565b6106296004803603602081101561062257600080fd5b503561120c565b6040518082600681111561063957fe5b60ff16815260200191505060405180910390f35b61037b6004803603604081101561066357600080fd5b50803590602001356001600160a01b031661122c565b6103356004803603604081101561068f57600080fd5b5080359060200135611537565b6106a4611558565b604080516001600160a01b039092168252519081900360200190f35b6106dd600480360360208110156106d657600080fd5b5035611567565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6104316004803603602081101561071957600080fd5b50356115aa565b6103356004803603608081101561073657600080fd5b508035906020810135906001600160a01b03604082013581169160600135166116e7565b610335600480360361018081101561077157600080fd5b506001600160a01b0361016082013516611add565b6107a36004803603602081101561079c57600080fd5b5035611ee6565b005b610335600480360360208110156107bb57600080fd5b5035611f3f565b610335600480360360208110156107d857600080fd5b50356001600160a01b0316611f45565b610335611f57565b6103356004803603604081101561080657600080fd5b5080359060200135611f5c565b6106a46004803603602081101561082957600080fd5b5035611f7d565b6103356004803603602081101561084657600080fd5b5035611f98565b6103356004803603602081101561086357600080fd5b5035611faa565b6104316004803603602081101561088057600080fd5b50356121f3565b6108a46004803603602081101561089d57600080fd5b50356121fe565b6040518082606080838360005b838110156108c95781810151838201526020016108b1565b5050505090500191505060405180910390f35b6108a4600480360360408110156108f257600080fd5b50803590602001356001600160a01b031661224d565b6103356004803603602081101561091e57600080fd5b50356129be565b6104316004803603602081101561093b57600080fd5b50356129c9565b6103356004803603602081101561095857600080fd5b5035612a30565b600060208190529081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b8c0154600c909c01549a9b999a989997989697959694959394929391929091906001600160a01b03168d565b60008281602002015183600160200201518460026020020151856003602002015186600460200201518760056020020151886006602002015189600760200201518a600860200201518b600960200201518c600a6020020151604051602001808c81526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019b505050505050505050505050604051602081830303815290604052805190602001208260405160200180838152602001826001600160a01b03166001600160a01b031660601b8152601401925050506040516020818303038152906040528051906020012090505b92915050565b600281565b600080610af0614288565b50505060009182526001602081815260408085206001600160a01b039490941685526011909301815292829020825160608101845281548082529282015494810185905260029091015460ff16151592019190915291565b60009182526001602081815260408085206001600160a01b0394909416855260139093019052912080549101549091565b60009081526001602052604090205490565b60055481565b6000818152600260209081526040808320548584529183905282206005810154821115610bc057806005015491505b6004810154610bd5908363ffffffff612a4216565b95945050505050565b6000610bec84848433612a8c565b949350505050565b604080517f616464726573732047656e6573697350726f746f636f6c41646472657373000060208083019190915271189e5d195ccccc88141c9bdc1bdcd85b125960721b603e8301526b75696e7432353620566f746560a01b60508301527475696e7432353620416d6f756e74546f5374616b6560581b605c8301526c75696e74323536204e6f6e636560981b60718301528251605e818403018152607e909201909252805191012081565b600160208190526000918252604090912080549181015460028201546003830154600484015460058501546006860154600787015460088801546009890154600a8a0154600e909a01546001600160a01b03808b169b60ff600160a01b909c048c169b99909116989091168d565b600084610d1a81612e92565b610d65576040805162461bcd60e51b815260206004820152601760248201527670726f706f73616c206973206e6f7420766f7461626c6560481b604482015290519081900360640190fd5b6000868152600160205260409020610d7b6142ab565b5060058082015460009081526020818152604080832081516101a0810183528154815260018201549381019390935260028101549183019190915260038101546060830152600481015460808301529283015460a0820152600683015460c0820152600783015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b830154610160820152600c909201546001600160a01b0316610180830181905215610e8b578161018001516001600160a01b0316336001600160a01b031614610e845760405162461bcd60e51b81526004018080602001828103825260248152602001806145226024913960400191505060405180910390fd5b5084610e8e565b50335b610e9a89828a8a612f05565b9998505050505050505050565b60009081526001602052604090206002015490565b6000818152600160205260408120600a01546105dc908290610ee590839063ffffffff61353c16565b600085815260016020818152604080842092845260129092019052902054909150610bec90600a840290610f2090849063ffffffff61355216565b9063ffffffff6135ab16565b600080846002141561104f5750604080517f616464726573732047656e6573697350726f746f636f6c41646472657373000060208083019190915271189e5d195ccccc88141c9bdc1bdcd85b125960721b603e8301526b75696e7432353620566f746560a01b60508301527475696e7432353620416d6f756e74546f5374616b6560581b605c8301526c75696e74323536204e6f6e636560981b60718301528251605e818403018152607e830184528051908201203060601b609e84015260b283018c905260d283018b905260f283018a90526101128084018a90528451808503909101815261013284018552805190830120610152840191909152610172808401919091528351808403909101815261019290920190925280519101206110a0565b604080513060601b602080830191909152603482018c9052605482018b9052607482018a905260948083018a90528351808403909101815260b4909201909252805191012061109d906135ed565b90505b60006110ea85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505063ffffffff61363e169050565b90506001600160a01b038116611147576040805162461bcd60e51b815260206004820152601a60248201527f7374616b657220616464726573732063616e6e6f742062652030000000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205487146111a1576040805162461bcd60e51b815260206004820152600b60248201526a77726f6e67206e6f6e636560a81b604482015290519081900360640190fd5b6001600160a01b0381166000908152600760205260409020546111cb90600163ffffffff61372c16565b6001600160a01b0382166000908152600760205260409020556111f08a8a8a84612a8c565b9a9950505050505050505050565b600160029091565b60005b90565b60009081526001602081905260409091200154600160a01b900460ff1690565b6000828152600160205260408120819060026001820154600160a01b900460ff16600681111561125857fe5b146112aa576040805162461bcd60e51b815260206004820152601f60248201527f70726f706f73616c207374617465206d75737420626520657865637574656400604482015290519081900360640190fd5b60028082015460009081526012830160209081526040808320546001600160a01b03891684526013860190925290912091820154909190158015906112f3575060028301548154145b8015611303575060018360020154145b801561130e57508115155b1561132a578183600701548260020154028161132657fe5b0493505b83158015906113bf5750600183015460065460408051636b8eb40360e01b81526001600160a01b039283166004820152602481018b9052905187939290921691636b8eb40391604480820192602092909190829003018186803b15801561139057600080fd5b505afa1580156113a4573d6000803e3d6000fd5b505050506040513d60208110156113ba57600080fd5b505110155b1561152d576000600282015560068301546113e0908563ffffffff61378616565b60068085019190915560018401549054604080516317d4ebe560e31b81526001600160a01b039283166004820152898316602482015260448101889052606481018b90529051919092169163bea75f289160848083019260209291908290030181600087803b15801561145257600080fd5b505af1158015611466573d6000803e3d6000fd5b505050506040513d602081101561147c57600080fd5b50516114cf576040805162461bcd60e51b815260206004820152601e60248201527f6661696c6564206174207374616b696e67546f6b656e5472616e736665720000604482015290519081900360640190fd5b8254600090815260036020908152604091829020548251878152925196975087966001600160a01b03808b16949216928b927fb4a37163ec93e05e09b62e52f7f2ea8cfde431802edede7dfebe53d2ad969dbb929081900390910190a45b5050509250929050565b60009182526001602090815260408084209284526012909201905290205490565b6006546001600160a01b031681565b6000908152600160208181526040808420838552601081018352818520546002808752838720549587526012909201909352818520549085529320549093919291565b60006115b461431c565b60008381526001602081815260409283902083516101c08101855281548152928101546001600160a01b038116928401929092529192830190600160a01b900460ff16600681111561160257fe5b600681111561160d57fe5b8152600282015460208201526003808301546001600160a01b0316604080840191909152600484015460608085019190915260058501546080850152600685015460a0850152600785015460c0850152600885015460e08501526009850154610100850152600a8501546101208501528151908101918290526101409093019291600b85019182845b815481526020019060010190808311611696575050509183525050600e919091015460ff16151560209091015260c081015181519192506116d691610b91565b6116df846137c8565b119392505050565b6000838152602081905260408120600b0154421161173d576040805162461bcd60e51b815260206004820152600e60248201526d1b9bdd081858dd1a5d99481e595d60921b604482015290519081900360640190fd5b60008481526020819052604090205460321115611797576040805162461bcd60e51b81526020600482015260136024820152721b9bc81c185c985b595d195c9cc8195e1a5cdd606a1b604482015290519081900360640190fd5b600554604080513060601b60208083019190915260348083018590528351808403909101815260549092019092528051910120906117dc90600163ffffffff61372c16565b6005556117e761431c565b33602082810182905260408051606093841b818401526bffffffffffffffffffffffff1988851b16603482015281516028818303018152604890910182528051908301208452600381850181905261018085015142905260008a815280845282812060029081015460a08801526001600160a01b038b811660808901529587015260c086018b9052855181529252902054166118da576001600160a01b0384166118b0578051600090815260036020526040902080546001600160a01b031916331790556118da565b8051600090815260036020526040902080546001600160a01b0319166001600160a01b0386161790555b8051600090815260046020908152604080832054898452918390528220600a015461191191606491610f209163ffffffff61355216565b60008881526020819052604090206009015490915061193790829063ffffffff61380916565b60e0830152600083815260016020818152604092839020855181559085015191810180546001600160a01b0319166001600160a01b03909316929092178083559285015185939192909160ff60a01b1916600160a01b83600681111561199957fe5b0217905550606082015160028201556080820151600380830180546001600160a01b0319166001600160a01b039093169290921790915560a0830151600483015560c0830151600583015560e08301516006830155610100830151600783015561012083015160088301556101408301516009830155610160830151600a830155610180830151611a2f91600b8401919061439d565b506101a09190910151600e909101805460ff191691151591909117905560e08201516000848152600160209081526040808320600280855260129091018352818420949094558551835260038252918290205482519384526001600160a01b038a8116928501929092528383018b9052915191169185917f75b4ff136cc5de5957574c797de3334eb1c141271922b825eb071e0487ba2c5c916060908290030190a350909695505050505050565b60006064833511801590611af357506032833510155b611b2e5760405162461bcd60e51b81526004018080602001828103825260298152602001806144a56029913960400191505060405180910390fd5b613e80608084013511801590611b4957506103e86080840135115b611b9a576040805162461bcd60e51b815260206004820152601e60248201527f31303030203c207468726573686f6c64436f6e7374203c3d2031363030300000604482015290519081900360640190fd5b606460e08401351115611bf4576040805162461bcd60e51b815260206004820181905260248201527f766f7465727352657075746174696f6e4c6f7373526174696f203c3d20313030604482015290519081900360640190fd5b60a083013560408401351015611c3b5760405162461bcd60e51b815260040180806020018281038252602b81526020018061447a602b913960400191505060405180910390fd5b610100830135611c92576040805162461bcd60e51b815260206004820152601e60248201527f6d696e696d756d44616f426f756e74792073686f756c64206265203e20300000604482015290519081900360640190fd5b610120830135611ce9576040805162461bcd60e51b815260206004820152601c60248201527f64616f426f756e7479436f6e73742073686f756c64206265203e203000000000604482015290519081900360640190fd5b6000611d1f84600b806020026040519081016040528092919082600b602002808284376000920191909152508691506109cf9050565b60008181526020819052604090205490915015611d3d579050610ada565b60ac60026107d05b613e80811015611d8d57608087013581108015611d69575060028102608088013511155b15611d7f57818381611d7757fe5b049250611d8d565b600190910190600202611d45565b50604080516101a0810182528735815260208089013590820152878201359181019190915260608088013590820152608080820190611dda908901356001600160d81b03166103e8613819565b81526020810184905260a088810135604083015260c0808a0135606084015260e0808b013560808501526101008b0135928401929092526101208a0135908301520187600a6020908102919091013582526001600160a01b03978816918101919091526000858152808252604090819020835181559183015160018301558201516002820155606082015160038201556080820151600482015560a0820151600582015560c0820151600682015560e0820151600782015561010082015160088201556101208201516009820155610140820151600a820155610160820151600b82015561018090910151600c90910180546001600160a01b0319169190961617909455509392505050565b80611ef081612e92565b611f3b576040805162461bcd60e51b815260206004820152601760248201527670726f706f73616c206973206e6f7420766f7461626c6560481b604482015290519081900360640190fd5b5050565b50600290565b60076020526000908152604090205481565b600181565b6000918252600160209081526040808420928452600f909201905290205490565b6003602052600090815260409020546001600160a01b031681565b60046020526000908152604090205481565b600081815260016020526040812060056001820154600160a01b900460ff166006811115611fd457fe5b1480611ff9575060066001820154600160a01b900460ff166006811115611ff757fe5b145b6120345760405162461bcd60e51b81526004018080602001828103825260338152602001806144ef6033913960400191505060405180910390fd5b61203d8361383c565b61208e576040805162461bcd60e51b815260206004820152601760248201527f70726f706f73616c206e65656420746f20657870697265000000000000000000604482015290519081900360640190fd5b6120ba6120ad600b83016001015460048401549063ffffffff61372c16565b429063ffffffff61378616565b600a8201556120c883610ebc565b60088201549092506120e0908363ffffffff61378616565b60088201556006546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561213957600080fd5b505af115801561214d573d6000803e3d6000fd5b505050506040513d602081101561216357600080fd5b50516121b6576040805162461bcd60e51b815260206004820152601d60248201527f7472616e7366657220746f206d73672e73656e646572206661696c6564000000604482015290519081900360640190fd5b604080518381529051339185917f7468017f6ff596af88244327e88fe691ac48cc1db88b033d11c335f2c7ccdd039181900360200190a350919050565b6000610ada82612e92565b6122066143db565b60008281526001602052604090819020815160608101909252600b0160038282826020028201915b81548152602001906001019080831161222e5750505050509050919050565b6122556143db565b600083815260016020526040902060026001820154600160a01b900460ff16600681111561227f57fe5b14806122a35750600180820154600160a01b900460ff1660068111156122a157fe5b145b6122de5760405162461bcd60e51b815260040180806020018281038252602d81526020018061444d602d913960400191505060405180910390fd5b6122e66142ab565b5060058082015460009081526020818152604080832081516101a081018352815481526001820154818501526002808301548285015260038301546060830152600483015460808301529582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b820154610160820152600c909101546001600160a01b0390811661018083015288168452601386018352818420948601548452601286019092528220549092916123f26123bc89610ebc565b6001600090815260128801602052604080822054600283529120546123e69163ffffffff61372c16565b9063ffffffff61378616565b6001840154909150156124bd57600180860154600160a01b900460f