@venusprotocol/governance-contracts
Version:
1,315 lines • 111 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "GovernorBravoDelegate",
"sourceName": "contracts/Governance/GovernorBravoDelegate.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "oldAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "NewAdmin",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "oldGuardian",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newGuardian",
"type": "address"
}
],
"name": "NewGuardian",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "oldImplementation",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newImplementation",
"type": "address"
}
],
"name": "NewImplementation",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "oldPendingAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newPendingAdmin",
"type": "address"
}
],
"name": "NewPendingAdmin",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "ProposalCanceled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "proposer",
"type": "address"
},
{
"indexed": false,
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"indexed": false,
"internalType": "string[]",
"name": "signatures",
"type": "string[]"
},
{
"indexed": false,
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"indexed": false,
"internalType": "uint256",
"name": "startBlock",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "endBlock",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "description",
"type": "string"
},
{
"indexed": false,
"internalType": "uint8",
"name": "proposalType",
"type": "uint8"
}
],
"name": "ProposalCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "ProposalExecuted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldMaxOperations",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newMaxOperations",
"type": "uint256"
}
],
"name": "ProposalMaxOperationsUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "eta",
"type": "uint256"
}
],
"name": "ProposalQueued",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldProposalThreshold",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newProposalThreshold",
"type": "uint256"
}
],
"name": "ProposalThresholdSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "votingPeriod",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "votingDelay",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalThreshold",
"type": "uint256"
}
],
"name": "SetProposalConfigs",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldMinVotingPeriod",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newMinVotingPeriod",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "oldmaxVotingPeriod",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newmaxVotingPeriod",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "oldminVotingDelay",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newminVotingDelay",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "oldmaxVotingDelay",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newmaxVotingDelay",
"type": "uint256"
}
],
"name": "SetValidationParams",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "votes",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
}
],
"name": "VoteCast",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldVotingDelay",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newVotingDelay",
"type": "uint256"
}
],
"name": "VotingDelaySet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldVotingPeriod",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newVotingPeriod",
"type": "uint256"
}
],
"name": "VotingPeriodSet",
"type": "event"
},
{
"constant": true,
"inputs": [],
"name": "BALLOT_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "DOMAIN_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MAX_PROPOSAL_THRESHOLD",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MIN_PROPOSAL_THRESHOLD",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "_acceptAdmin",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "governorAlpha",
"type": "address"
}
],
"name": "_initiate",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "newGuardian",
"type": "address"
}
],
"name": "_setGuardian",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "newPendingAdmin",
"type": "address"
}
],
"name": "_setPendingAdmin",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalMaxOperations_",
"type": "uint256"
}
],
"name": "_setProposalMaxOperations",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "admin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "cancel",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
}
],
"name": "castVote",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteBySig",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
}
],
"name": "castVoteWithReason",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "execute",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "getActions",
"outputs": [
{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "string[]",
"name": "signatures",
"type": "string[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "address",
"name": "voter",
"type": "address"
}
],
"name": "getReceipt",
"outputs": [
{
"components": [
{
"internalType": "bool",
"name": "hasVoted",
"type": "bool"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "uint96",
"name": "votes",
"type": "uint96"
}
],
"internalType": "struct GovernorBravoDelegateStorageV1.Receipt",
"name": "",
"type": "tuple"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "guardian",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "implementation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "initialProposalId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "xvsVault_",
"type": "address"
},
{
"components": [
{
"internalType": "uint256",
"name": "minVotingPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxVotingPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minVotingDelay",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxVotingDelay",
"type": "uint256"
}
],
"internalType": "struct GovernorBravoDelegateStorageV3.ValidationParams",
"name": "validationParams_",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint256",
"name": "votingDelay",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "votingPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "proposalThreshold",
"type": "uint256"
}
],
"internalType": "struct GovernorBravoDelegateStorageV2.ProposalConfig[]",
"name": "proposalConfigs_",
"type": "tuple[]"
},
{
"internalType": "contract TimelockInterface[]",
"name": "timelocks",
"type": "address[]"
},
{
"internalType": "address",
"name": "guardian_",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "latestProposalIds",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "pendingAdmin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "proposalConfigs",
"outputs": [
{
"internalType": "uint256",
"name": "votingDelay",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "votingPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "proposalThreshold",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "proposalCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "proposalMaxOperations",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "proposalThreshold",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "proposalTimelocks",
"outputs": [
{
"internalType": "contract TimelockInterface",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "proposals",
"outputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "address",
"name": "proposer",
"type": "address"
},
{
"internalType": "uint256",
"name": "eta",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "startBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "endBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "forVotes",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "againstVotes",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "abstainVotes",
"type": "uint256"
},
{
"internalType": "bool",
"name": "canceled",
"type": "bool"
},
{
"internalType": "bool",
"name": "executed",
"type": "bool"
},
{
"internalType": "uint8",
"name": "proposalType",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "string[]",
"name": "signatures",
"type": "string[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "string",
"name": "description",
"type": "string"
},
{
"internalType": "enum GovernorBravoDelegateStorageV2.ProposalType",
"name": "proposalType",
"type": "uint8"
}
],
"name": "propose",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "queue",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "quorumVotes",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"components": [
{
"internalType": "uint256",
"name": "votingDelay",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "votingPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "proposalThreshold",
"type": "uint256"
}
],
"internalType": "struct GovernorBravoDelegateStorageV2.ProposalConfig[]",
"name": "proposalConfigs_",
"type": "tuple[]"
}
],
"name": "setProposalConfigs",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"components": [
{
"internalType": "uint256",
"name": "minVotingPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxVotingPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minVotingDelay",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxVotingDelay",
"type": "uint256"
}
],
"internalType": "struct GovernorBravoDelegateStorageV3.ValidationParams",
"name": "newValidationParams",
"type": "tuple"
}
],
"name": "setValidationParams",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "state",
"outputs": [
{
"internalType": "enum GovernorBravoDelegateStorageV1.ProposalState",
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "timelock",
"outputs": [
{
"internalType": "contract TimelockInterface",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "validationParams",
"outputs": [
{
"internalType": "uint256",
"name": "minVotingPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxVotingPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minVotingDelay",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxVotingDelay",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "votingDelay",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "votingPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "xvsVault",
"outputs": [
{
"internalType": "contract XvsVaultInterface",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x608060405234801561001057600080fd5b50614f84806100206000396000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c806346416f9211610146578063da35c664116100c3578063e9c714f211610087578063e9c714f2146104d5578063ee9799ee146104dd578063f851a440146104f0578063f9d28b80146104f8578063fc4eee421461050b578063fe0d94c11461051357610253565b8063da35c6641461047f578063ddf0b00914610487578063deaaa7cc1461049a578063e23a9a52146104a2578063e38e8c0f146104c257610253565b80637bdbe4d01161010a5780637bdbe4d014610441578063b58131b014610449578063b71d1a0c14610451578063bb08c32114610464578063d33219b41461047757610253565b806346416f92146103f8578063567813881461040b5780635c60da1b1461041e578063791f5d23146104265780637b3c71d31461042e57610253565b806325fd935a116101d45780633932abb1116101985780633932abb1146103a25780633bccf4fd146103aa5780633e4f49e6146103bd57806340e58ee5146103dd578063452a9320146103f057610253565b806325fd935a146103285780632678224714610330578063328dd9821461034557806334cf39091461036857806335a87de21461038057610253565b80631b9ce5751161021b5780631b9ce575146102db5780631e75adf2146102f05780631ebcfefd1461030557806320606b701461031857806324bc1a641461032057610253565b8063013cf08b1461025857806302a251a31461028b57806306fdde03146102a0578063164a1ab1146102b557806317977c61146102c8575b600080fd5b61026b610266366004613159565b610526565b6040516102829b9a99989796959493929190614bac565b60405180910390f35b610293610592565b6040516102829190614750565b6102a8610598565b6040516102829190614815565b6102936102c3366004612f9e565b6105c8565b6102936102d6366004612ed4565b610a86565b6102e3610a98565b60405161028291906147f9565b6103036102fe366004613097565b610aa7565b005b610303610313366004613159565b610d8d565b610293610dfd565b610293610e14565b610293610e22565b610338610e30565b6040516102829190614620565b610358610353366004613159565b610e3f565b6040516102829493929190614703565b6103706110ce565b6040516102829493929190614c86565b61039361038e366004613159565b6110dd565b60405161028293929190614c5e565b6102936110fe565b6103036103b8366004613248565b611104565b6103d06103cb366004613159565b6112dc565b6040516102829190614807565b6103036103eb366004613159565b611476565b61033861170c565b610303610406366004612efa565b61171b565b6103036104193660046131b1565b611925565b61033861196f565b61029361197e565b61030361043c3660046131e1565b61198c565b6102936119dc565b6102936119e2565b61030361045f366004612ed4565b6119e8565b61030361047236600461313b565b611a65565b6102e3611b5f565b610293611b6e565b610303610495366004613159565b611b74565b610293611e08565b6104b56104b0366004613177565b611e14565b6040516102829190614ae6565b6103036104d0366004612ed4565b611e81565b610303611f39565b6102e36104eb366004613159565b612017565b610338612032565b610303610506366004612ed4565b612041565b61029361218e565b610303610521366004613159565b612194565b600a60208190526000918252604090912080546001820154600283015460078401546008850154600986015496860154600b870154600c880154600e9098015496986001600160a01b039096169794969395929492939192909160ff808316926101009004811691168b565b60045481565b6040518060400160405280601481526020017356656e757320476f7665726e6f7220427261766f60601b81525081565b6000600654600014156105f65760405162461bcd60e51b81526004016105ed906148a6565b60405180910390fd5b600e600083600281111561060657fe5b60ff1681526020810191909152604001600020600201546009546001600160a01b031663782d6fe13361063a436001612347565b6040518363ffffffff1660e01b815260040161065792919061462e565b60206040518083038186803b15801561066f57600080fd5b505afa158015610683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106a791908101906132b0565b6001600160601b031610156106ce5760405162461bcd60e51b81526004016105ed90614a46565b855187511480156106e0575084518751145b80156106ed575083518751145b6107095760405162461bcd60e51b81526004016105ed90614916565b86516107275760405162461bcd60e51b81526004016105ed90614986565b600c548751111561074a5760405162461bcd60e51b81526004016105ed906149e6565b336000908152600b602052604090205480156107c757600061076b826112dc565b9050600181600781111561077b57fe5b14156107995760405162461bcd60e51b81526004016105ed90614a26565b60008160078111156107a757fe5b14156107c55760405162461bcd60e51b81526004016105ed906149f6565b505b60006107f743600e60008760028111156107dd57fe5b60ff1681526020019081526020016000206000015461236f565b9050600061082982600e600088600281111561080f57fe5b60ff1681526020019081526020016000206001015461236f565b600780546001019055905061083c61270e565b604051806101e001604052806007548152602001336001600160a01b03168152602001600081526020018c81526020018b81526020018a81526020018981526020018481526020018381526020016000815260200160008152602001600081526020016000151581526020016000151581526020018760028111156108bd57fe5b60ff16905280516000908152600a602090815260409182902083518155818401516001820180546001600160a01b0319166001600160a01b039092169190911790559183015160028301556060830151805193945084936109249260038501920190612794565b50608082015180516109409160048401916020909101906127f9565b5060a0820151805161095c916005840191602090910190612840565b5060c08201518051610978916006840191602090910190612899565b5060e082015160078201556101008083015160088301556101208301516009830155610140830151600a830155610160830151600b80840191909155610180840151600c840180546101a087015160ff199182169315159390931761ff0019169215159094029190911790556101c090930151600e909201805490911660ff90921691909117905581516020808401516001600160a01b0316600090815292905260409091205580517fc8df7ff219f3c0358e14500814d8b62b443a4bebf3a596baa60b9295b1cf1bde90338d8d8d8d89898f8f6002811115610a5757fe5b604051610a6d9a99989796959493929190614af4565b60405180910390a15193505050505b9695505050505050565b600b6020526000908152604090205481565b6009546001600160a01b031681565b6000546001600160a01b03163314610ad15760405162461bcd60e51b81526004016105ed90614906565b60105415801590610ae3575060115415155b8015610af0575060125415155b8015610afd575060135415155b610b195760405162461bcd60e51b81526004016105ed90614856565b8051610b2361239b565b60ff168114610b445760405162461bcd60e51b81526004016105ed90614826565b60005b81811015610d8857601060000154838281518110610b6157fe5b6020026020010151602001511015610b8b5760405162461bcd60e51b81526004016105ed90614886565b601060010154838281518110610b9d57fe5b6020026020010151602001511115610bc75760405162461bcd60e51b81526004016105ed90614ad6565b601060020154838281518110610bd957fe5b6020026020010151600001511015610c035760405162461bcd60e51b81526004016105ed906149b6565b601060030154838281518110610c1557fe5b6020026020010151600001511115610c3f5760405162461bcd60e51b81526004016105ed90614996565b691fc3842bd1f071c00000838281518110610c5657fe5b6020026020010151604001511015610c805760405162461bcd60e51b81526004016105ed90614a86565b693f870857a3e0e3800000838281518110610c9757fe5b6020026020010151604001511115610cc15760405162461bcd60e51b81526004016105ed90614836565b828181518110610ccd57fe5b6020908102919091018101516000838152600e835260409081902082518155928201516001840155015160029091015582517f99382998f89cd4c8aec7ae5d6deca4b4b0bfa01691740ccd702bf76b6a6816d290849083908110610d2d57fe5b602002602001015160200151848381518110610d4557fe5b602002602001015160000151858481518110610d5d57fe5b602002602001015160400151604051610d7893929190614c5e565b60405180910390a1600101610b47565b505050565b6000546001600160a01b03163314610db75760405162461bcd60e51b81526004016105ed90614a06565b600c8054908290556040517fd03b3c3c5c1446bcdd31423061041c94ca3bc5450fe7ccfb0f636f4c420de87e90610df19083908590614c50565b60405180910390a15050565b604051610e0990614615565b604051809103902081565b697f0e10af47c1c700000081565b693f870857a3e0e380000081565b6001546001600160a01b031681565b6060806060806000600a600087815260200190815260200160002090508060030181600401826005018360060183805480602002602001604051908101604052809291908181526020018280548015610ec157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ea3575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610f1357602002820191906000526020600020905b815481526020019060010190808311610eff575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b82821015610fe65760008481526020908190208301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610fd25780601f10610fa757610100808354040283529160200191610fd2565b820191906000526020600020905b815481529060010190602001808311610fb557829003601f168201915b505050505081526020019060010190610f3b565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156110b85760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156110a45780601f10611079576101008083540402835291602001916110a4565b820191906000526020600020905b81548152906001019060200180831161108757829003601f168201915b50505050508152602001906001019061100d565b5050505090509450945094509450509193509193565b60105460115460125460135484565b600e6020526000908152604090208054600182015460029092015490919083565b60035481565b600060405161111290614615565b60408051918290038220828201909152601482527356656e757320476f7665726e6f7220427261766f60601b6020909201919091527f157d76627a3b71c0167806f5879f7a61d3e301322f3a3b9f900315f15937671a6111706123a1565b30604051602001611184949392919061475e565b60405160208183030381529060405280519060200120905060006040516111aa906145d9565b6040519081900381206111c3918990899060200161479c565b604051602081830303815290604052805190602001209050600082826040516020016111f09291906145e4565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161122d94939291906147c4565b6020604051602081039080840390855afa15801561124f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166112825760405162461bcd60e51b81526004016105ed906148f6565b806001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48a8a6112ba858e8e6123a5565b6040516112c993929190614d5e565b60405180910390a2505050505050505050565b600081600754101580156112f1575060065482115b61130d5760405162461bcd60e51b81526004016105ed90614a76565b6000828152600a60205260409020600c81015460ff1615611332576002915050611471565b80600701544311611347576000915050611471565b8060080154431161135c576001915050611471565b80600a015481600901541115806113805750697f0e10af47c1c70000008160090154105b1561138f576003915050611471565b60028101546113a2576004915050611471565b600c810154610100900460ff16156113be576007915050611471565b6002810154600e82015460ff166000908152600f60209081526040918290205482516360d143f160e11b8152925161145b94936001600160a01b039092169263c1a287e29260048082019391829003018186803b15801561141e57600080fd5b505afa158015611432573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061145691908101906130e9565b61236f565b421061146b576006915050611471565b60059150505b919050565b6007611481826112dc565b600781111561148c57fe5b14156114aa5760405162461bcd60e51b81526004016105ed90614a66565b6000818152600a60205260409020600d546001600160a01b03163314806114dd575060018101546001600160a01b031633145b806115a05750600e8181015460ff16600090815260209190915260409020600201546009546001808401546001600160a01b039283169263782d6fe192911690611528904390612347565b6040518363ffffffff1660e01b8152600401611545929190614664565b60206040518083038186803b15801561155d57600080fd5b505afa158015611571573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061159591908101906132b0565b6001600160601b0316105b6115bc5760405162461bcd60e51b81526004016105ed906149c6565b600c8101805460ff1916600117905560005b60038201548110156116dc57600e82015460ff166000908152600f60205260409020546003830180546001600160a01b039092169163591fcdfe91908490811061161457fe5b6000918252602090912001546004850180546001600160a01b03909216918590811061163c57fe5b906000526020600020015485600501858154811061165657fe5b9060005260206000200186600601868154811061166f57fe5b9060005260206000200187600201546040518663ffffffff1660e01b815260040161169e9594939291906146c2565b600060405180830381600087803b1580156116b857600080fd5b505af11580156116cc573d6000803e3d6000fd5b5050600190920191506115ce9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c82604051610df19190614750565b600d546001600160a01b031681565b60008052600f6020527ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec375546001600160a01b03161561176c5760405162461bcd60e51b81526004016105ed90614936565b6000546001600160a01b031633146117965760405162461bcd60e51b81526004016105ed90614926565b6001600160a01b0385166117bc5760405162461bcd60e51b81526004016105ed906148d6565b6001600160a01b0381166117e25760405162461bcd60e51b81526004016105ed906149d6565b6117ea61239b565b60ff1682511461180c5760405162461bcd60e51b81526004016105ed90614896565b61181461239b565b60ff168351146118365760405162461bcd60e51b81526004016105ed90614a96565b600980546001600160a01b038088166001600160a01b031992831617909255600a600c55600d80549284169290911691909117905561187484611a65565b61187d83610aa7565b815160005b8181101561191c5760006001600160a01b03168482815181106118a157fe5b60200260200101516001600160a01b031614156118d05760405162461bcd60e51b81526004016105ed90614a16565b8381815181106118dc57fe5b6020908102919091018101516000838152600f909252604090912080546001600160a01b0319166001600160a01b03909216919091179055600101611882565b50505050505050565b337fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda483836119548483836123a5565b60405161196393929190614d5e565b60405180910390a25050565b6002546001600160a01b031681565b691fc3842bd1f071c0000081565b337fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda485856119bb8483836123a5565b86866040516119ce959493929190614d18565b60405180910390a250505050565b600c5481565b60055481565b6000546001600160a01b03163314611a125760405162461bcd60e51b81526004016105ed90614866565b600180546001600160a01b038381166001600160a01b03198316179092556040519116907fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a990610df19083908590614649565b6000546001600160a01b03163314611a8f5760405162461bcd60e51b81526004016105ed90614966565b805115801590611aa3575060008160400151115b8015611ab6575080606001518160400151105b8015611ac6575060208101518151105b611ae25760405162461bcd60e51b81526004016105ed90614a56565b60105481516011546020840151601254604080870151601354606089015192517fc90c7ad68c13a491443f1c63dafa18b365428ee69170415afe234c16dc6f650d98611b3998909790969095909490939291614ca1565b60405180910390a180516010556020810151601155604081015160125560600151601355565b6008546001600160a01b031681565b60075481565b6004611b7f826112dc565b6007811115611b8a57fe5b14611ba75760405162461bcd60e51b81526004016105ed90614946565b6000818152600a60209081526040808320600e81015460ff168452600f8352818420548251630d48571f60e31b81529251919493611c109342936001600160a01b0390931692636a42b8f892600480840193919291829003018186803b15801561141e57600080fd5b905060005b6003830154811015611dc157611db9836003018281548110611c3357fe5b6000918252602090912001546004850180546001600160a01b039092169184908110611c5b57fe5b9060005260206000200154856005018481548110611c7557fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611d035780601f10611cd857610100808354040283529160200191611d03565b820191906000526020600020905b815481529060010190602001808311611ce657829003601f168201915b5050505050866006018581548110611d1757fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611da55780601f10611d7a57610100808354040283529160200191611da5565b820191906000526020600020905b815481529060010190602001808311611d8857829003601f168201915b50505050600e89015488915060ff16612595565b600101611c15565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290611dfb9085908490614c50565b60405180910390a1505050565b604051610e09906145d9565b611e1c6128f2565b506000828152600a602090815260408083206001600160a01b0385168452600d018252918290208251606081018452905460ff8082161515835261010082041692820192909252620100009091046001600160601b0316918101919091525b92915050565b600d546001600160a01b0316331480611ea457506000546001600160a01b031633145b611ec05760405162461bcd60e51b81526004016105ed90614ab6565b6001600160a01b038116611ee65760405162461bcd60e51b81526004016105ed90614aa6565b600d80546001600160a01b038381166001600160a01b03198316179092556040519116907f08fdaf06427a2010e5958f4329b566993472d14ce81d3f16ce7f2a2660da98e390610df19083908590614649565b6001546001600160a01b031633148015611f5257503315155b611f6e5760405162461bcd60e51b81526004016105ed906149a6565b60008054600180546001600160a01b038082166001600160a01b03198086168217968790559092169092556040519282169390927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc92611fd2928692911690614649565b60405180910390a16001546040517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991610df19184916001600160a01b031690614649565b600f602052600090815260409020546001600160a01b031681565b6000546001600160a01b031681565b6000546001600160a01b0316331461206b5760405162461bcd60e51b81526004016105ed90614a36565b6006541561208b5760405162461bcd60e51b81526004016105ed90614976565b806001600160a01b031663da35c6646040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156120c657600080fd5b505af11580156120da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120fe91908101906130e9565b600781905560065560005b61211161239b565b60ff1681101561218a576000818152600f6020526040808220548151630e18b68160e01b815291516001600160a01b0390911692630e18b681926004808201939182900301818387803b15801561216757600080fd5b505af115801561217b573d6000803e3d6000fd5b50505050806001019050612109565b5050565b60065481565b600561219f826112dc565b60078111156121aa57fe5b146121c75760405162461bcd60e51b81526004016105ed906148e6565b6000818152600a60205260408120600c8101805461ff001916610100179055905b600382015481101561231757600e82015460ff166000908152600f60205260409020546003830180546001600160a01b0390921691630825f38f91908490811061222e57fe5b6000918252602090912001546004850180546001600160a01b03909216918590811061225657fe5b906000526020600020015485600501858154811061227057fe5b9060005260206000200186600601868154811061228957fe5b9060005260206000200187600201546040518663ffffffff1660e01b81526004016122b89594939291906146c2565b600060405180830381600087803b1580156122d257600080fd5b505af11580156122e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261230e9190810190613107565b506001016121e8565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051610df19190614750565b6000828211156123695760405162461bcd60e51b81526004016105ed90614ac6565b50900390565b6000828201838110156123945760405162461bcd60e51b81526004016105ed90614956565b9392505050565b60035b90565b4690565b600060016123b2846112dc565b60078111156123bd57fe5b146123da5760405162461bcd60e51b81526004016105ed906148b6565b60028260ff1611156123fe5760405162461bcd60e51b81526004016105ed90614846565b6000838152600a602090815260408083206001600160a01b0388168452600d8101909252909120805460ff16156124475760405162461bcd60e51b81526004016105ed906148c6565b600954600783015460405163782d6fe160e01b81526000926001600160a01b03169163782d6fe19161247d918b91600401614664565b60206040518083038186803b15801561249557600080fd5b505afa1580156124a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124cd91908101906132b0565b905060ff85166124f8576124ee83600a0154826001600160601b031661236f565b600a84015561254e565b8460ff16600114156125255761251b8360090154826001600160601b031661236f565b600984015561254e565b8460ff166002141561254e5761254883600b0154826001600160601b031661236f565b600b8401555b8154600160ff199091161761ff00191661010060ff871602176dffffffffffffffffffffffff00001916620100006001600160601b03831602179091559150509392505050565b60ff81166000908152600f60209081526040918290205491516001600160a01b039092169163f2b06537916125d4918a918a918a918a918a9101614672565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016126069190614750565b60206040518083038186803b15801561261e57600080fd5b505afa158015612632573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061265691908101906130cb565b156126735760405162461bcd60e51b81526004016105ed90614876565b60ff81166000908152600f602052604090819020549051633a66f90160e01b81526001600160a01b0390911690633a66f901906126bc9089908990899089908990600401614672565b602060405180830381600087803b1580156126d657600080fd5b505af11580156126ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061191c91908101906130e9565b604051806101e001604052806000815260200160006001600160a01b0316815260200160008152602001606081526020016060815260200160608152602001606081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600015158152602001600060ff1681525090565b8280548282559060005260206000209081019282156127e9579160200282015b828111156127e957825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906127b4565b506127f5929150612912565b5090565b828054828255906000526020600020