@daostack/arc-experimental
Version:
A platform for building DAOs
1,348 lines • 102 kB
JSON
{
"contractName": "GenesisProtocol",
"abi": [
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "_stakingToken",
"type": "address"
}
],
"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"
},
{
"inputs": [],
"name": "DELEGATION_HASH_EIP712",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "NO",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "NUM_OF_CHOICES",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "YES",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "averagesDownstakesOfBoosted",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "calcExecuteCallBounty",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "cancelVote",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "execute",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "executeBoosted",
"outputs": [
{
"internalType": "uint256",
"name": "expirationCallBounty",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getAllowedRangeOfChoices",
"outputs": [
{
"internalType": "uint256",
"name": "min",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "max",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "getNumberOfChoices",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[11]",
"name": "_params",
"type": "uint256[11]"
},
{
"internalType": "address",
"name": "_voteOnBehalf",
"type": "address"
}
],
"name": "getParametersHash",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "getProposalOrganization",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "getProposalTimes",
"outputs": [
{
"internalType": "uint256[3]",
"name": "times",
"type": "uint256[3]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"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"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isAbstainAllow",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "isVotable",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "orgBoostedProposalsCnt",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "organizations",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"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"
}
],
"stateMutability": "view",
"type": "function"
},
{
"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"
}
],
"stateMutability": "view",
"type": "function"
},
{
"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"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proposalsCnt",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"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"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_beneficiary",
"type": "address"
}
],
"name": "redeem",
"outputs": [
{
"internalType": "uint256[3]",
"name": "rewards",
"type": "uint256[3]"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"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"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "score",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[11]",
"name": "_params",
"type": "uint256[11]"
},
{
"internalType": "address",
"name": "_voteOnBehalf",
"type": "address"
}
],
"name": "setParameters",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "shouldBoost",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"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"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"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"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "stakesNonce",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "stakingToken",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "state",
"outputs": [
{
"internalType": "enum GenesisProtocolLogic.ProposalState",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_paramsHash",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_organizationId",
"type": "bytes32"
}
],
"name": "threshold",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"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"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"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"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_vote",
"type": "uint256"
}
],
"name": "voteStake",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_choice",
"type": "uint256"
}
],
"name": "voteStatus",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "winningVote",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b50604051620047c5380380620047c5833981810160405260208110156200003757600080fd5b5051806200006573543ff227f64aa17ea132bf9886cab5db55dcaddf620000bb602090811b620026ad17901c565b156200009757600680546001600160a01b03191673543ff227f64aa17ea132bf9886cab5db55dcaddf179055620000b3565b600680546001600160a01b0319166001600160a01b0383161790555b5050620000f8565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590620000f057508115155b949350505050565b6146bd80620001086000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372f702f31161013b578063b4512913116100b8578063c8f526e81161007c578063c8f526e81461087c578063cc3bf9e9146108d1578063e5af18c5146108fd578063e751f2711461091a578063fb6c0cbb1461093757610248565b8063b4512913146107e5578063ba51b14e14610808578063bb5a05ed14610825578063beda801514610842578063c08351061461085f57610248565b80639525c0cc116100ff5780639525c0cc1461077b5780639bc5689d14610347578063a003651d1461079a578063a05ea6e4146107b7578063b2449d65146107dd57610248565b806372f702f31461069157806379a1c1f6146106b557806380f5e0a1146106f857806388737b5e146107155780638894c41b1461074f57610248565b806332ed5b12116101c95780635142bc1e1161018d5780635142bc1e146105f457806351d997b2146105fc57806361d585da146106045780636359036b14610642578063707437681461066e57610248565b806332ed5b121461044d578063359afa49146104f35780633c1338181461052b5780634047487314610548578063488c65fc1461056557610248565b80631702ef0c116102105780631702ef0c146103c057806321b4b3dc146103dd5780632d598e58146103e55780632daedd521461040857806330ca0a531461044557610248565b8063025068041461024d57806307b4e1e3146102d85780630d48344214610347578063119ce91b1461034f57806316db517214610394575b600080fd5b61026a6004803603602081101561026357600080fd5b5035610954565b604080519d8e5260208e019c909c528c8c019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e08801526101008701526101208601526101408501526101608401526001600160a01b031661018083015251908190036101a00190f35b61033560048036036101808110156102ef57600080fd5b81019080806101600190600b806020026040519081016040528092919082600b602002808284376000920191909152509194505050356001600160a01b031690506109c4565b60408051918252519081900360200190f35b610335610acc565b61037b6004803603604081101561036557600080fd5b50803590602001356001600160a01b0316610ad1565b6040805192835260208301919091528051918290030190f35b61037b600480360360408110156103aa57600080fd5b50803590602001356001600160a01b0316610b0d565b610335600480360360208110156103d657600080fd5b5035610b62565b610335610b74565b610335600480360360408110156103fb57600080fd5b5080359060200135610b7a565b6104316004803603606081101561041e57600080fd5b5080359060208101359060400135610bc1565b604080519115158252519081900360200190f35b610335610c24565b61046a6004803603602081101561046357600080fd5b5035610cd0565b604051808e81526020018d6001600160a01b031681526020018c600681111561048f57fe5b81526020018b81526020018a6001600160a01b0316815260200189815260200188815260200187815260200186815260200185815260200184815260200183815260200182151581526020019d505050505050505050505050505060405180910390f35b6104316004803603608081101561050957600080fd5b50803590602081013590604081013590606001356001600160a01b0316610d3e565b6103356004803603602081101561054157600080fd5b5035610eed565b6103356004803603602081101561055e57600080fd5b5035610f02565b610431600480360360c081101561057b57600080fd5b8135916020810135916040820135916060810135916080820135919081019060c0810160a08201356401000000008111156105b557600080fd5b8201836020820111156105c757600080fd5b803590602001918460018302840111640100000000831117156105e957600080fd5b509092509050610f68565b61037b611285565b61043161128d565b6106216004803603602081101561061a57600080fd5b5035611292565b6040518082600681111561063157fe5b815260200191505060405180910390f35b61037b6004803603604081101561065857600080fd5b50803590602001356001600160a01b03166112b2565b6103356004803603604081101561068457600080fd5b50803590602001356115cf565b6106996115f0565b604080516001600160a01b039092168252519081900360200190f35b6106d2600480360360208110156106cb57600080fd5b50356115ff565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6104316004803603602081101561070e57600080fd5b5035611642565b6103356004803603608081101561072b57600080fd5b508035906020810135906001600160a01b036040820135811691606001351661177f565b610335600480360361018081101561076657600080fd5b506001600160a01b036101608201351661178c565b6107986004803603602081101561079157600080fd5b5035611b79565b005b610335600480360360208110156107b057600080fd5b5035611bd2565b610335600480360360208110156107cd57600080fd5b50356001600160a01b0316611bd8565b610335611bea565b610335600480360360408110156107fb57600080fd5b5080359060200135611bef565b6106996004803603602081101561081e57600080fd5b5035611c10565b6103356004803603602081101561083b57600080fd5b5035611c2b565b6103356004803603602081101561085857600080fd5b5035611c3d565b6104316004803603602081101561087557600080fd5b5035611e74565b6108996004803603602081101561089257600080fd5b5035611e7f565b6040518082606080838360005b838110156108be5781810151838201526020016108a6565b5050505090500191505060405180910390f35b610899600480360360408110156108e757600080fd5b50803590602001356001600160a01b0316611ece565b6103356004803603602081101561091357600080fd5b5035612629565b6104316004803603602081101561093057600080fd5b5035612634565b6103356004803603602081101561094d57600080fd5b503561269b565b600060208190529081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b8c0154600c909c01549a9b999a989997989697959694959394929391929091906001600160a01b03168d565b60008281602002015183600160200201518460026020020151856003602002015186600460200201518760056020020151886006602002015189600760200201518a600860200201518b600960200201518c600a6020020151604051602001808c81526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019b505050505050505050505050604051602081830303815290604052805190602001208260405160200180838152602001826001600160a01b031660601b8152601401925050506040516020818303038152906040528051906020012090505b92915050565b600281565b60008281526001602090815260408083206001600160a01b038516845260110190915290205460f881901c906001600160801b03169250929050565b600080610b186143ce565b50505060009182526001602081815260408085206001600160a01b039490941685526013909301815292829020825180840190935280548084529101549190920181905260f81c91565b60009081526001602052604090205490565b60055481565b6000818152600260209081526040808320548584529183905282206005810154821115610ba957806005015491505b6004810154610bb890836126e6565b95945050505050565b600083610bcd81612730565b610c18576040805162461bcd60e51b815260206004820152601760248201527670726f706f73616c206973206e6f7420766f7461626c6560481b604482015290519081900360640190fd5b610bb8858585336127a3565b604080517f616464726573732047656e6573697350726f746f636f6c41646472657373000060208083019190915271189e5d195ccccc88141c9bdc1bdcd85b125960721b603e8301526b75696e7432353620566f746560a01b60508301527475696e7432353620416d6f756e74546f5374616b6560581b605c8301526c75696e74323536204e6f6e636560981b60718301528251605e818403018152607e909201909252805191012081565b600160208190526000918252604090912080549181015460028201546003830154600484015460058501546006860154600787015460088801546009890154600a8a0154600e909a01546001600160a01b03808b169b60ff600160a01b909c048c169b99909116989091168d565b600084610d4a81612730565b610d95576040805162461bcd60e51b815260206004820152601760248201527670726f706f73616c206973206e6f7420766f7461626c6560481b604482015290519081900360640190fd5b6000868152600160205260409020610dab6143e8565b5060058082015460009081526020818152604080832081516101a0810183528154815260018201549381019390935260028101549183019190915260038101546060830152600481015460808301529283015460a0820152600683015460c0820152600783015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b830154610160820152600c909201546001600160a01b0316610180830181905215610ed1578161018001516001600160a01b0316336001600160a01b031614610eca576040805162461bcd60e51b815260206004820152601760248201527f766f746572206973206e6f7420617574686f72697a6564000000000000000000604482015290519081900360640190fd5b5084610ed4565b50335b610ee089828a8a612bed565b9998505050505050505050565b60009081526001602052604090206002015490565b6000818152600160205260408120600a01546105dc908290610f2590839061320b565b600085815260016020818152604080842092845260129092019052902054909150610f6090600a840290610f5a908490613221565b9061327a565b949350505050565b600087610f7481612730565b610fbf576040805162461bcd60e51b815260206004820152601760248201527670726f706f73616c206973206e6f7420766f7461626c6560481b604482015290519081900360640190fd5b600085600214156110e15750604080517f616464726573732047656e6573697350726f746f636f6c41646472657373000060208083019190915271189e5d195ccccc88141c9bdc1bdcd85b125960721b603e8301526b75696e7432353620566f746560a01b60508301527475696e7432353620416d6f756e74546f5374616b6560581b605c8301526c75696e74323536204e6f6e636560981b60718301528251605e818403018152607e830184528051908201203060601b609e84015260b283018d905260d283018c905260f283018b90526101128084018b9052845180850390910181526101328401855280519083012061015284019190915261017280840191909152835180840390910181526101929092019092528051910120611132565b604080513060601b602080830191909152603482018d9052605482018c9052607482018b905260948083018b90528351808403909101815260b4909201909252805191012061112f906132bc565b90505b600061117686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505061330d9050565b90506001600160a01b0381166111d3576040805162461bcd60e51b815260206004820152601a60248201527f7374616b657220616464726573732063616e6e6f742062652030000000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260076020526040902054881461122d576040805162461bcd60e51b815260206004820152600b60248201526a77726f6e67206e6f6e636560a81b604482015290519081900360640190fd5b6001600160a01b0381166000908152600760205260409020546112519060016134f8565b6001600160a01b0382166000908152600760205260409020556112768b8b8b846127a3565b9b9a5050505050505050505050565b600160029091565b600090565b60009081526001602081905260409091200154600160a01b900460ff1690565b6000828152600160205260408120819060026001820154600160a01b900460ff1660068111156112de57fe5b14611330576040805162461bcd60e51b815260206004820152601960248201527f70726f706f73616c206e6f742065786563757465642079657400000000000000604482015290519081900360640190fd5b600281015460009081526012820160209081526040808320546001600160a01b03881684526013850190925290912060018101546001600160f81b03161580159061138557506002830154600182015460f81c145b8015611395575060018360020154145b80156113a057508115155b156113c55781836007015482600101546001600160f81b031602816113c157fe5b0493505b831580159061145a5750600183015460065460408051636b8eb40360e01b81526001600160a01b039283166004820152602481018b9052905187939290921691636b8eb40391604480820192602092909190829003018186803b15801561142b57600080fd5b505afa15801561143f573d6000803e3d6000fd5b505050506040513d602081101561145557600080fd5b505110155b156115c5576001810180546001600160f81b031916905560068301546114809085613552565b60068085019190915560018401549054604080516317d4ebe560e31b81526001600160a01b039283166004820152898316602482015260448101889052606481018b90529051919092169163bea75f289160848083019260209291908290030181600087803b1580156114f257600080fd5b505af1158015611506573d6000803e3d6000fd5b505050506040513d602081101561151c57600080fd5b5051611567576040805162461bcd60e51b81526020600482015260156024820152741d1c985b9cd9995c881d1bdad95b8819985a5b1959605a1b604482015290519081900360640190fd5b8254600090815260036020908152604091829020548251878152925196975087966001600160a01b03808b16949216928b927fb4a37163ec93e05e09b62e52f7f2ea8cfde431802edede7dfebe53d2ad969dbb929081900390910190a45b5050509250929050565b60009182526001602090815260408084209284526012909201905290205490565b6006546001600160a01b031681565b6000908152600160208181526040808420838552601081018352818520546002808752838720549587526012909201909352818520549085529320549093919291565b600061164c614459565b60008381526001602081815260409283902083516101c08101855281548152928101546001600160a01b038116928401929092529192830190600160a01b900460ff16600681111561169a57fe5b60068111156116a557fe5b8152600282015460208201526003808301546001600160a01b0316604080840191909152600484015460608085019190915260058501546080850152600685015460a0850152600785015460c0850152600885015460e08501526009850154610100850152600a8501546101208501528151908101918290526101409093019291600b85019182845b81548152602001906001019080831161172e575050509183525050600e919091015460ff16151560209091015260c0810151815191925061176e91610b7a565b61177784613594565b119392505050565b6000610bb88484846135cf565b600060648335118015906117a257506032833510155b6117dd5760405162461bcd60e51b815260040180806020018281038252602981526020018061460b6029913960400191505060405180910390fd5b613e806080840135118015906117f857506103e86080840135115b611849576040805162461bcd60e51b815260206004820152601e60248201527f31303030203c207468726573686f6c64436f6e7374203c3d2031363030300000604482015290519081900360640190fd5b606460e084013511156118a3576040805162461bcd60e51b815260206004820181905260248201527f766f7465727352657075746174696f6e4c6f7373526174696f203c3d20313030604482015290519081900360640190fd5b60a0830135604084013510156118ea5760405162461bcd60e51b815260040180806020018281038252602b81526020018061459b602b913960400191505060405180910390fd5b610100830135611941576040805162461bcd60e51b815260206004820152601e60248201527f6d696e696d756d44616f426f756e74792073686f756c64206265203e20300000604482015290519081900360640190fd5b610120830135611998576040805162461bcd60e51b815260206004820152601c60248201527f64616f426f756e7479436f6e73742073686f756c64206265203e203000000000604482015290519081900360640190fd5b60006119ce84600b806020026040519081016040528092919082600b602002808284376000920191909152508691506109c49050565b905060ac60026107d05b613e80811015611a20576080870135811080156119fc575060028102608088013511155b15611a1257818381611a0a57fe5b049250611a20565b6001909101906002026119d8565b50604080516101a0810182528735815260208089013590820152878201359181019190915260608088013590820152608080820190611a6d908901356001600160d81b03166103e86139bc565b81526020810184905260a088810135604083015260c0808a0135606084015260e0808b013560808501526101008b0135928401929092526101208a0135908301520187600a6020908102919091013582526001600160a01b03978816918101919091526000858152808252604090819020835181559183015160018301558201516002820155606082015160038201556080820151600482015560a0820151600582015560c0820151600682015560e0820151600782015561010082015160088201556101208201516009820155610140820151600a820155610160820151600b82015561018090910151600c90910180546001600160a01b0319169190961617909455509392505050565b80611b8381612730565b611bce576040805162461bcd60e51b815260206004820152601760248201527670726f706f73616c206973206e6f7420766f7461626c6560481b604482015290519081900360640190fd5b5050565b50600290565b60076020526000908152604090205481565b600181565b6000918252600160209081526040808420928452600f909201905290205490565b6003602052600090815260409020546001600160a01b031681565b60046020526000908152604090205481565b600081815260016020526040812060056001820154600160a01b900460ff166006811115611c6757fe5b1480611c8c575060066001820154600160a01b900460ff166006811115611c8a57fe5b145b611cc75760405162461bcd60e51b81526004018080602001828103825260338152602001806146556033913960400191505060405180910390fd5b611cd0836139df565b611d21576040805162461bcd60e51b815260206004820152601760248201527f70726f706f73616c206e65656420746f20657870697265000000000000000000604482015290519081900360640190fd5b611d41611d3a600b8301600101546004840154906134f8565b4290613552565b600a820155611d4f83610f02565b6008820154909250611d619083613552565b60088201556006546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015611dba57600080fd5b505af1158015611dce573d6000803e3d6000fd5b505050506040513d6020811015611de457600080fd5b5051611e37576040805162461bcd60e51b815260206004820152601d60248201527f7472616e7366657220746f206d73672e73656e646572206661696c6564000000604482015290519081900360640190fd5b604080518381529051339185917f7468017f6ff596af88244327e88fe691ac48cc1db88b033d11c335f2c7ccdd039181900360200190a350919050565b6000610ac682612730565b611e876144da565b60008281526001602052604090819020815160608101909252600b0160038282826020028201915b815481526020019060010190808311611eaf5750505050509050919050565b611ed66144da565b600083815260016020526040902060026001820154600160a01b900460ff166006811115611f0057fe5b1480611f245750600180820154600160a01b900460ff166006811115611f2257fe5b145b611f5f5760405162461bcd60e51b815260040180806020018281038252602d81526020018061454c602d913960400191505060405180910390fd5b611f676143e8565b5060058082015460009081526020818152604080832081516101a081018352815481526001820154818501526002808301548285015260038301546060830152600483015460808301529582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b820154610160820152600c909101546001600160a01b03908116610180830152881684526013860183528184209486015484526012860190925282205490929161206761203d89610f02565b600160009081526012880160205260408082205460028352912054612061916134f8565b90613552565b83549091501561212257600180860154600160a01b900460ff16600681111561208c57fe5b141561209b578254865261211d565b6002850154600184015460f81c141561211d5760018381015460f81c14156121045780856007015410156120ff5760006120e286600701548361355290919063ffffffff16565b845490915083906120f39083613221565b816120fa57fe5b048752505b61211d565b825482906121129083613221565b8161211957fe5b0486525b600083555b600e85015460ff16158015612152575084546000908152600360205260409020546001600160a01b038881169116145b80156121775750600180860154600160a01b900460ff16600681111561217457fe5b14155b8015612187575060028560020154145b156121cc5760078501546121ba90612061846121a38386613221565b816121aa57fe5b048960005b6020020151906134f8565b8652600e8501805460ff191660011790555b6001600160a01b03871660009081526011860160205260409020546001600160801b038116600160f783901c81161460f883901c821580159061220c5750815b15612347576001808a0154600160a01b900460ff16600681111561222c57fe5b141561225e57606461224c8961010001518561322190919063ffffffff16565b8161225357fe5b0460208b015261232b565b8060ff168960020154141561232b57600060018a60020154141561229557506002600090815260108a0160205260409020546122aa565b506001600090815260108a0160205260409020545b60646122c48a61010001518361322190919063ffffffff16565b816122cb57fe5b60028c0154600090815260108d0160205260409020549190049150612324906122f48684613221565b816122fb57fe5b0460646123168c61010001518861322190919063ffffffff16565b8161231d57fe5b04906134f8565b60208c0152505b6001600160a01b038b16600090815260118a0160205260408120555b60038901546001600160a01b038c8116911614801561236a575060018960020154145b8015612382575060038901546001600160a01b031615155b156123a45760e088015160408b01526003890180546001600160a01b03191690555b8951156124fe57895160088a01546123bb91613552565b60088a01556006546001600160a01b031663a9059cbb8c8c600060200201516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561242057600080fd5b505af1158015612434573d6000803e3d6000fd5b505050506040513d602081101561244a57600080fd5b505161249d576040805162461bcd60e51b815260206004820152601e60248201527f7472616e7366657220746f2062656e6566696369617279206661696c65640000604482015290519081900360640190fd5b88546000908152600360205260408120546001600160a01b03808e16929116908e907f6d26871c9f457d104b2122485f659f126f7a0cf6938cf20482c03f49794a2fbf908e9060200201516040518082815260200191505060405180910390a45b60408a015161250f908b60016121af565b1561261a5760018901546001600160a01b031663d29b5d2f61253a8c600260200201518d60016121af565b8d8f6040518463ffffffff1660e01b815260040180848152602001836001600160a01b031681526020018281526020019350505050602060405180830381600087803b15801561258957600080fd5b505af115801561259d573d6000803e3d6000fd5b505050506040513d60208110156125b357600080fd5b505088546000908152600360205260409020546001600160a01b03808d1691168d7f7419b736daacf66d5c1645948c956fca2b83be1e2e02d486d65713f289d683b86126088e600260200201518f60016121af565b60408051918252519081900360200190a45b50505050505050505092915050565b6000610ac682613594565b60008161264081612730565b61268b576040805162461bcd60e51b815260206004820152601760248201527670726f706f73616c206973206e6f7420766f7461626c6560481b604482015290519081900360640190fd5b612694836139df565b9392505050565b60026020526000908152604090205481565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610f60575050151592915050565b60008282650100000000005b8115610bb85781600116600114156127115761270e8184614243565b90505b60019190911c90811561272b576127288384614243565b92505b6126f2565b600081815260016020819052604082200154600160a01b900460ff16600481600681111561275a57fe5b14806127715750600581600681111561276f57fe5b145b806127875750600681600681111561278557fe5b145b806126945750600381600681111561279b57fe5b149392505050565b6000600284111580156127b65750600084115b6127fa576040805162461bcd60e51b815260206004820152601060248201526f77726f6e6720766f7