@vechain/vebetterdao-contracts
Version:
Vebetter DAO smart contracts, including their addresses, ABIs, and interfaces.
1,349 lines • 90.7 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "Emissions",
"sourceName": "contracts/Emissions.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"inputs": [],
"name": "ReentrancyGuardReentrantCall",
"type": "error"
},
{
"inputs": [],
"name": "UUPSUnauthorizedCallContext",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "slot",
"type": "bytes32"
}
],
"name": "UUPSUnsupportedProxiableUUID",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "newDuration",
"type": "uint256"
},
{
"indexed": true,
"internalType": "uint256",
"name": "oldDuration",
"type": "uint256"
}
],
"name": "EmissionCycleDurationUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "cycle",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "xAllocations",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "vote2Earn",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "treasury",
"type": "uint256"
}
],
"name": "EmissionDistributed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "newDecay",
"type": "uint256"
},
{
"indexed": true,
"internalType": "uint256",
"name": "oldDecay",
"type": "uint256"
}
],
"name": "MaxVote2EarnDecayUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "oldAddress",
"type": "address"
}
],
"name": "TreasuryAddressUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "newPercentage",
"type": "uint256"
},
{
"indexed": true,
"internalType": "uint256",
"name": "oldPercentage",
"type": "uint256"
}
],
"name": "TreasuryPercentageUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "oldAddress",
"type": "address"
}
],
"name": "Vote2EarnAddressUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "newPeriod",
"type": "uint256"
},
{
"indexed": true,
"internalType": "uint256",
"name": "oldPeriod",
"type": "uint256"
}
],
"name": "Vote2EarnDecayPeriodUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "newDecay",
"type": "uint256"
},
{
"indexed": true,
"internalType": "uint256",
"name": "oldDecay",
"type": "uint256"
}
],
"name": "Vote2EarnDecayUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "oldAddress",
"type": "address"
}
],
"name": "XAllocationsAddressUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "newPeriod",
"type": "uint256"
},
{
"indexed": true,
"internalType": "uint256",
"name": "oldPeriod",
"type": "uint256"
}
],
"name": "XAllocationsDecayPeriodUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "newDecay",
"type": "uint256"
},
{
"indexed": true,
"internalType": "uint256",
"name": "oldDecay",
"type": "uint256"
}
],
"name": "XAllocationsDecayUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "oldAddress",
"type": "address"
}
],
"name": "XAllocationsGovernorAddressUpdated",
"type": "event"
},
{
"inputs": [],
"name": "CONTRACTS_ADDRESS_MANAGER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DECAY_SETTINGS_MANAGER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MINTER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SCALING_FACTOR",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UPGRADER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UPGRADE_INTERFACE_VERSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "b3tr",
"outputs": [
{
"internalType": "contract IB3TR",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "bootstrap",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "cycleDuration",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "distribute",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "cycle",
"type": "uint256"
}
],
"name": "emissions",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "xAllocations",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "vote2Earn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "treasury",
"type": "uint256"
}
],
"internalType": "struct Emissions.Emission",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCurrentCycle",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getNextCycleBlock",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getRemainingEmissions",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "cycle",
"type": "uint256"
}
],
"name": "getTreasuryAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "cycle",
"type": "uint256"
}
],
"name": "getVote2EarnAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "cycle",
"type": "uint256"
}
],
"name": "getXAllocationAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "initialXAppAllocation",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "minter",
"type": "address"
},
{
"internalType": "address",
"name": "admin",
"type": "address"
},
{
"internalType": "address",
"name": "upgrader",
"type": "address"
},
{
"internalType": "address",
"name": "contractsAddressManager",
"type": "address"
},
{
"internalType": "address",
"name": "decaySettingsManager",
"type": "address"
},
{
"internalType": "address",
"name": "b3trAddress",
"type": "address"
},
{
"internalType": "address[4]",
"name": "destinations",
"type": "address[4]"
},
{
"internalType": "uint256",
"name": "migrationAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "initialXAppAllocation",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "cycleDuration",
"type": "uint256"
},
{
"internalType": "uint256[4]",
"name": "decaySettings",
"type": "uint256[4]"
},
{
"internalType": "uint256",
"name": "treasuryPercentage",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxVote2EarnDecay",
"type": "uint256"
}
],
"internalType": "struct Emissions.InitializationData",
"name": "data",
"type": "tuple"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_isEmissionsNotAligned",
"type": "bool"
}
],
"name": "initializeV2",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "cycle",
"type": "uint256"
}
],
"name": "isCycleDistributed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "cycle",
"type": "uint256"
}
],
"name": "isCycleEnded",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isEmissionsNotAligned",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isNextCycleDistributable",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lastEmissionBlock",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxVote2EarnDecay",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "nextCycle",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_cycleDuration",
"type": "uint256"
}
],
"name": "setCycleDuration",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_maxVote2EarnDecay",
"type": "uint256"
}
],
"name": "setMaxVote2EarnDecay",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "treasuryAddress",
"type": "address"
}
],
"name": "setTreasuryAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_percentage",
"type": "uint256"
}
],
"name": "setTreasuryPercentage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "vote2EarnAddress",
"type": "address"
}
],
"name": "setVote2EarnAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_decay",
"type": "uint256"
}
],
"name": "setVote2EarnDecay",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_period",
"type": "uint256"
}
],
"name": "setVote2EarnDecayPeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_decay",
"type": "uint256"
}
],
"name": "setXAllocationsDecay",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_period",
"type": "uint256"
}
],
"name": "setXAllocationsDecayPeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_xAllocationsGovernor",
"type": "address"
}
],
"name": "setXAllocationsGovernorAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "xAllocationAddress",
"type": "address"
}
],
"name": "setXallocationsAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "start",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalEmissions",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "treasury",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "treasuryPercentage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "version",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "vote2Earn",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "vote2EarnDecay",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "vote2EarnDecayPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "xAllocations",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "xAllocationsDecay",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "xAllocationsDecayPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "xAllocationsGovernor",
"outputs": [
{
"internalType": "contract IXAllocationVotingGovernor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613be96200010460003960008181612e9501528181612ebe0152612fef0152613be96000f3fe60806040526004361061029c5760003560e01c806301ffc9a7146102a15780630b236bf7146102d6578063100e550a146102f957806311c2e55d1461031b57806319a669741461033d5780631e2272c51461035d578063248a9ca314610372578063273364ef14610392578063289de0c1146103b25780632f2ff15d146103d2578063323fe7b5146103f257806332446203146104125780633542e9031461042757806336568abe14610447578063367df424146104675780633af03ea81461047c5780633fe0a0551461049c57806341f6659b146104b1578063450db90b146104d15780634553e60a146104e65780634bdd36ce146105065780634f1ef2861461051b5780634f228ec21461052e5780634f4eeeaa1461054357806352d1902d1461056357806354fd4d5014610578578063582a486a146105ab5780635bec4cb4146105c05780635ecf68e9146105d557806361d027b3146105ea5780636605bfda146105ff5780636b6923b81461061f57806373e96a33146106345780637ab56083146106495780638cc239341461065e5780638e083b031461067e5780638ffa2d0e1461069e57806391d14854146106be578063952f2133146106de5780639e6fd7e614610700578063a217fddf14610720578063a465fb0a14610735578063a66bc8171461074a578063a9a5aa561461076a578063ad3cb1cc1461077f578063be26ed7f146107b0578063be9a6555146107c5578063c66966b7146107da578063cb6da670146107ef578063d539139314610831578063d547741f14610853578063dcb74b3f14610873578063e4fc6b6d14610895578063e52ef17f146108aa578063e7b685cf146108ca578063eb358534146108df578063ef4cadc5146108ff578063f72c0d8b14610916578063fb969b0a14610938575b600080fd5b3480156102ad57600080fd5b506102c16102bc36600461340a565b61094d565b60405190151581526020015b60405180910390f35b3480156102e257600080fd5b506102eb610984565b6040519081526020016102cd565b34801561030557600080fd5b5061030e610997565b6040516102cd9190613434565b34801561032757600080fd5b5061033b610336366004613448565b6109b3565b005b34801561034957600080fd5b5061033b61035836600461347d565b610a7b565b34801561036957600080fd5b506102c1610b7a565b34801561037e57600080fd5b506102eb61038d366004613448565b610ba4565b34801561039e57600080fd5b506102eb6103ad366004613448565b610bc4565b3480156103be57600080fd5b5061033b6103cd366004613448565b610c28565b3480156103de57600080fd5b5061033b6103ed366004613498565b610ce7565b3480156103fe57600080fd5b5061033b61040d3660046135f1565b610d09565b34801561041e57600080fd5b506102eb611489565b34801561043357600080fd5b506102eb610442366004613448565b6114b0565b34801561045357600080fd5b5061033b610462366004613498565b61150d565b34801561047357600080fd5b506102eb611545565b34801561048857600080fd5b5061033b61049736600461347d565b611558565b3480156104a857600080fd5b506102eb6116e1565b3480156104bd57600080fd5b5061033b6104cc3660046136e5565b6116f4565b3480156104dd57600080fd5b506102eb6117b4565b3480156104f257600080fd5b5061033b610501366004613448565b6117c7565b34801561051257600080fd5b506102eb611898565b61033b610529366004613702565b61192d565b34801561053a57600080fd5b506102eb61194c565b34801561054f57600080fd5b5061033b61055e366004613448565b61195f565b34801561056f57600080fd5b506102eb6119e0565b34801561058457600080fd5b506040805180820190915260018152601960f91b60208201525b6040516102cd91906137cb565b3480156105b757600080fd5b5061030e6119fd565b3480156105cc57600080fd5b506102eb611a16565b3480156105e157600080fd5b5061030e611a29565b3480156105f657600080fd5b5061030e611a45565b34801561060b57600080fd5b5061033b61061a36600461347d565b611a61565b34801561062b57600080fd5b506102eb611b5d565b34801561064057600080fd5b506102eb611b70565b34801561065557600080fd5b506102eb611b83565b34801561066a57600080fd5b5061033b610679366004613448565b611b96565b34801561068a57600080fd5b5061033b61069936600461347d565b611cab565b3480156106aa57600080fd5b5061033b6106b9366004613448565b611da8565b3480156106ca57600080fd5b506102c16106d9366004613498565b611e64565b3480156106ea57600080fd5b506102eb600080516020613b7483398151915281565b34801561070c57600080fd5b5061033b61071b366004613448565b611e9a565b34801561072c57600080fd5b506102eb600081565b34801561074157600080fd5b5061030e611f6e565b34801561075657600080fd5b506102c1610765366004613448565b611f8a565b34801561077657600080fd5b506102c1611fac565b34801561078b57600080fd5b5061059e604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156107bc57600080fd5b506102eb611fc2565b3480156107d157600080fd5b5061033b612034565b3480156107e657600080fd5b506102eb61222b565b3480156107fb57600080fd5b5061080f61080a366004613448565b61223e565b60408051825181526020808401519082015291810151908201526060016102cd565b34801561083d57600080fd5b506102eb600080516020613b5483398151915281565b34801561085f57600080fd5b5061033b61086e366004613498565b6122a4565b34801561087f57600080fd5b506102eb600080516020613a9483398151915281565b3480156108a157600080fd5b5061033b6122c0565b3480156108b657600080fd5b506102c16108c5366004613448565b6126b9565b3480156108d657600080fd5b506102eb612723565b3480156108eb57600080fd5b506102eb6108fa366004613448565b612736565b34801561090b57600080fd5b506102eb620f424081565b34801561092257600080fd5b506102eb600080516020613af483398151915281565b34801561094457600080fd5b5061033b612793565b60006001600160e01b03198216637965db0b60e01b148061097e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b600061098e612ad8565b60090154905090565b60006109a1612ad8565b600301546001600160a01b0316919050565b600080516020613a948339815191526109cb81612afc565b612710821115610a335760405162461bcd60e51b815260206004820152603a6024820152600080516020613a748339815191526044820152790757374206265206265747765656e203020616e642031303030360341b60648201526084015b60405180910390fd5b6000610a3d612ad8565b905080600f0154837f0deeffbb4509f1ce2d10e6be0a39dd765796271e488c93b2f455d4f86f55bba760405160405180910390a3600f019190915550565b600080516020613b74833981519152610a9381612afc565b6001600160a01b038216610b0a5760405162461bcd60e51b815260206004820152603860248201527f456d697373696f6e733a2078416c6c6f636174696f6e416464726573732063616044820152776e6e6f7420626520746865207a65726f206164647265737360401b6064820152608401610a2a565b6000610b14612ad8565b60028101546040519192506001600160a01b0390811691908516907f3e77e17725ad6388690c6b478b505741b36c387ddd1625044d8597cabe0790b590600090a360020180546001600160a01b0319166001600160a01b03939093169290921790915550565b600080610b85612ad8565b905080600801548160100154610b9b9190613814565b43101591505090565b600080610baf612b06565b60009384526020525050604090206001015490565b600080610bcf612ad8565b90508060070154831115610bf55760405162461bcd60e51b8152600401610a2a90613827565b610bfe83611f8a565b610c0f57610c0a612b2a565b610c21565b60008381526011820160205260409020545b9392505050565b600080516020613a94833981519152610c4081612afc565b6064821115610c9f5760405162461bcd60e51b81526020600482015260376024820152600080516020613b9483398151915260448201527607374206265206265747765656e203020616e642031303604c1b6064820152608401610a2a565b6000610ca9612ad8565b90508060090154837f3a1ff98d8ba06af5b7cd7bb19bca111f6fa1fba9552b8f15dd2b3f86dfbe202260405160405180910390a36009019190915550565b610cf082610ba4565b610cf981612afc565b610d038383612cd5565b50505050565b6000610d13612d76565b805490915060ff600160401b82041615906001600160401b0316600081158015610d3a5750825b90506000826001600160401b03166001148015610d565750303b155b905081158015610d64575080155b15610d825760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610dab57845460ff60401b1916600160401b1785555b600086610100015111610e225760405162461bcd60e51b815260206004820152603960248201527f456d697373696f6e733a20496e697469616c207841707020616c6c6f6361746960448201527806f6e206d7573742062652067726561746572207468616e203603c1b6064820152608401610a2a565b600086610120015111610e475760405162461bcd60e51b8152600401610a2a9061385c565b6000866101600151118015610e63575061271086610160015111155b610ec05760405162461bcd60e51b815260206004820152603a6024820152600080516020613a748339815191526044820152790757374206265206265747765656e203120616e642031303030360341b6064820152608401610a2a565b6101408601515115801590610edc575061014086015151606410155b610f365760405162461bcd60e51b81526020600482015260376024820152600080516020613b9483398151915260448201527607374206265206265747765656e203120616e642031303604c1b6064820152608401610a2a565b6101408601516020015115801590610f58575061014086015160200151606410155b610faf5760405162461bcd60e51b81526020600482015260346024820152600080516020613ad483398151915260448201527306265206265747765656e203120616e64203130360641b6064820152608401610a2a565b610140860151604001516110285760405162461bcd60e51b815260206004820152603a60248201527f456d697373696f6e733a2078416c6c6f636174696f6e7320646563617920646560448201527906c6179206d7573742062652067726561746572207468616e20360341b6064820152608401610a2a565b6101408601516060015161109e5760405162461bcd60e51b815260206004820152603760248201527f456d697373696f6e733a20766f7465324561726e2064656361792064656c61796044820152760206d7573742062652067726561746572207468616e203604c1b6064820152608401610a2a565b60008661018001511180156110b95750606486610180015111155b6110d55760405162461bcd60e51b8152600401610a2a906138ac565b60c0860151516001600160a01b03166111535760405162461bcd60e51b815260206004820152603a60248201527f456d697373696f6e733a2058416c6c6f636174696f6e732064657374696e6174604482015279696f6e2063616e6e6f74206265207a65726f206164647265737360301b6064820152608401610a2a565b60c0860151602001516001600160a01b03166111d15760405162461bcd60e51b815260206004820152603760248201527f456d697373696f6e733a20566f7465324561726e2064657374696e6174696f6e6044820152762063616e6e6f74206265207a65726f206164647265737360481b6064820152608401610a2a565b60c0860151604001516001600160a01b031661124e5760405162461bcd60e51b815260206004820152603660248201527f456d697373696f6e733a2054726561737572792064657374696e6174696f6e2060448201527563616e6e6f74206265207a65726f206164647265737360501b6064820152608401610a2a565b60208601516001600160a01b03166112c05760405162461bcd60e51b815260206004820152602f60248201527f456d697373696f6e733a2041646d696e20616464726573732063616e6e6f742060448201526e6265207a65726f206164647265737360881b6064820152608401610a2a565b6112c8612d9a565b6112d0612da2565b6112d8612d9a565b60006112e2612ad8565b60a088015181546001600160a01b03199081166001600160a01b0392831617835560c08a0151805160028501805484169185169190911790556020808201516003860180548516918616919091179055604080830151600487018054861691871691909117905560609283015160058701805490951695169490941790925560e08b015160068501556101208b015160088501556101408b01518051600986015580830151600a86015592830151600c8501559190910151600d830155610100890151600e830155610160890151600f830155610180890151600b8301558801519091506113d290600090612cd5565b506113ef600080516020613b548339815191528860000151612cd5565b5061140c600080516020613af48339815191528860400151612cd5565b50611429600080516020613b748339815191528860600151612cd5565b50611446600080516020613a948339815191528860800151612cd5565b5050831561148157845460ff60401b19168555604051600080516020613ab48339815191529061147890600190613904565b60405180910390a15b505050505050565b600080611494612ad8565b9050806008015481601001546114aa9190613814565b91505090565b6000806114bb612ad8565b905080600701548311156114e15760405162461bcd60e51b8152600401610a2a90613827565b6114ea83611f8a565b6114f657610c0a612db2565b600092835260110160205250604090206001015490565b6001600160a01b03811633146115365760405163334bd91960e11b815260040160405180910390fd5b6115408282612e12565b505050565b600061154f612ad8565b600b0154905090565b600080516020613b7483398151915261157081612afc565b6001600160a01b0382166115ea5760405162461bcd60e51b815260206004820152603b60248201527f456d697373696f6e733a205f78416c6c6f636174696f6e73476f7665726e6f7260448201527a2063616e6e6f7420626520746865207a65726f206164647265737360281b6064820152608401610a2a565b6115f2611a16565b826001600160a01b03166302a251a36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611630573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116549190613918565b106116715760405162461bcd60e51b8152600401610a2a90613931565b600061167b612ad8565b60018101546040519192506001600160a01b0390811691908516907fd9365634b1542359685e4d736b69f8a87476421f69da0f3f8054668ab19af12990600090a360010180546001600160a01b0319166001600160a01b03939093169290921790915550565b60006116eb612ad8565b600e0154905090565b60026000611700612d76565b8054909150600160401b900460ff1680611727575080546001600160401b03808416911610155b156117455760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b178155600061176e612ad8565b601301805460ff191685151517905550805460ff60401b19168155604051600080516020613ab4833981519152906117a7908490613904565b60405180910390a1505050565b60006117be612ad8565b60120154905090565b600080516020613a948339815191526117df81612afc565b600082116118505760405162461bcd60e51b815260206004820152603860248201527f456d697373696f6e733a20766f7465324561726e20646563617920706572696f604482015277064206d7573742062652067726561746572207468616e20360441b6064820152608401610a2a565b600061185a612ad8565b905080600d0154837fabd78647c007c6d1d6eecf4716e5a72a4d9bd9567a40c1bff6744afaea572e1960405160405180910390a3600d019190915550565b6000806118a3612ad8565b905080601201548160000160009054906101000a90046001600160a01b03166001600160a01b031663355274ea6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119239190613918565b6114aa919061398a565b611935612e8a565b61193e82612f18565b6119488282612f30565b5050565b6000611956612ad8565b600c0154905090565b600080516020613a9483398151915261197781612afc565b60648211156119985760405162461bcd60e51b8152600401610a2a906138ac565b60006119a2612ad8565b905080600b0154837f25926bb56f58bd134092558734add1eb03c0cd4d2ed23753bc592d341efd1ef460405160405180910390a3600b019190915550565b60006119ea612fe4565b50600080516020613b1483398151915290565b6000611a07612ad8565b546001600160a01b0316919050565b6000611a20612ad8565b60080154905090565b6000611a33612ad8565b600101546001600160a01b0316919050565b6000611a4f612ad8565b600401546001600160a01b0316919050565b600080516020613b74833981519152611a7981612afc565b6001600160a01b038216611aed5760405162461bcd60e51b815260206004820152603560248201527f456d697373696f6e733a207472656173757279416464726573732063616e6e6f6044820152747420626520746865207a65726f206164647265737360581b6064820152608401610a2a565b6000611af7612ad8565b60048101546040519192506001600160a01b0390811691908516907f430359a6d97ced2b6f93c77a91e7ce9dfd43252eb91e916adba170485cd8a6a490600090a360040180546001600160a01b0319166001600160a01b03939093169290921790915550565b6000611b67612ad8565b60070154905090565b6000611b7a612ad8565b600a0154905090565b6000611b8d612ad8565b600f0154905090565b600080516020613a94833981519152611bae81612afc565b60008211611bce5760405162461bcd60e51b8152600401610a2a9061385c565b6000611bd8612ad8565b9050828160010160009054906101000a90046001600160a01b03166001600160a01b03166302a251a36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c549190613918565b10611c715760405162461bcd60e51b8152600401610a2a90613931565b600881015460405184907f7c897ff56bcd3a056ab27ca141deca9ce9a09fe7b851715a4c03b369fd70ad6290600090a36008019190915550565b600080516020613b74833981519152611cc381612afc565b6001600160a01b038216611d385760405162461bcd60e51b815260206004820152603660248201527f456d697373696f6e733a20766f7465324561726e416464726573732063616e6e6044820152756f7420626520746865207a65726f206164647265737360501b6064820152608401610a2a565b6000611d42612ad8565b60038101546040519192506001600160a01b0390811691908516907f69a718f328110240051382af8d9230bd304c4f60d5c5c5c73b37629ba594c12b90600090a360030180546001600160a01b0319166001600160a01b03939093169290921790915550565b600080516020613a94833981519152611dc081612afc565b6064821115611e1c5760405162461bcd60e51b81526020600482015260346024820152600080516020613ad483398151915260448201527306265206265747765656e203020616e64203130360641b6064820152608401610a2a565b6000611e26612ad8565b905080600a0154837f15aab0e25dd2072455ecac370347ecad5df8a13656d8bde714e0314ac71c541660405160405180910390a3600a019190915550565b600080611e6f612b06565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600080516020613a94833981519152611eb281612afc565b60008211611f265760405162461bcd60e51b815260206004820152603b60248201527f456d697373696f6e733a2078416c6c6f636174696f6e7320646563617920706560448201527a072696f64206d7573742062652067726561746572207468616e203602c1b6064820152608401610a2a565b6000611f30612ad8565b905080600c0154837f36ad3c0b2a12e3b2cdd1d93564f27f8b4a45b28fd15338f0bb82b6cfbdd384f360405160405180910390a3600c019190915550565b6000611f78612ad8565b600201546001600160a01b0316919050565b600080611f95612ad8565b600093845260110160205250506040902054151590565b6000611fb6612ad8565b6013015460ff16919050565b600080611fcd612ad8565b905060008160070154116120235760405162461bcd60e51b815260206004820152601f60248201527f456d697373696f6e733a206e6f7420626f6f74737472617070656420796574006044820152606401610a2a565b600181600701546114aa919061398a565b600080516020613b5483398151915261204c81612afc565b61205461302d565b600061205e612ad8565b805460408051635c975abb60e01b815290519293506001600160a01b0390911691635c975abb916004808201926020929091908290030181865afa1580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ce919061399d565b1561211b5760405162461bcd60e51b815260206004820152601f60248201527f456d697373696f6e733a204233545220746f6b656e20697320706175736564006044820152606401610a2a565b806007015460011461218f5760405162461bcd60e51b815260206004820152603760248201527f456d697373696f6e733a2043616e206f6e6c7920737461727420656d697373696044820152766f6e73207768656e206e657874206379636c65203d203160481b6064820152608401610a2a565b436010820155600181015460408051632f61652360e21b815290516001600160a01b039092169163bd85948c9160048082019260209290919082900301816000875af11580156121e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122079190613918565b5060078101805490600061221a836139ba565b919050555050612228613063565b50565b6000612235612ad8565b60100154905090565b61226260405180606001604052806000815260200160008152602001600081525090565b61226a612ad8565b6000928352601101602090815260409283902083516060810185528154815260018201549281019290925260020154928101929092525090565b6122ad82610ba4565b6122b681612afc565b610d038383612e12565b6122c861302d565b60006122d2612ad8565b905060018160070154116123385760405162461bcd60e51b815260206004820152602760248201527f456d697373696f6e733a20506c6561736520737461727420656d697373696f6e6044820152661cc8199a5c9cdd60ca1b6064820152608401610a2a565b612340610b7a565b61239a5760405162461bcd60e51b815260206004820152602560248201527f456d697373696f6e733a204e657874206379636c65206e6f742073746172746560448201526419081e595d60da1b6064820152608401610a2a565b60006123a4612b2a565b905060006123b0612db2565b905060006123bc613074565b90506123c6611898565b816123d18486613814565b6123db9190613814565b11156124435760405162461bcd60e51b815260206004820152603160248201527f456d697373696f6e733a20656d697373696f6e7320776f756c64206578636565604482015270064204233545220737570706c792063617607c1b6064820152608401610a2a565b4360108501556040805160608101825284815260208082018581528284018581526007890154600090815260118a0190935293909120915182555160018201559051600290910155806124968385613814565b6124a09190613814565b8460120160008282546124b39190613814565b9091555050835460028501546040516340c10f1960e01b81526001600160a01b03928316926340c10f19926124ef9291169087906004016139d3565b600060405180830381600087803b15801561250957600080fd5b505af115801561251d573d6000803e3d6000fd5b5050855460038701546040516340c10f1960e01b81526001600160a01b0392831694506340c10f199350612559929091169086906004016139d3565b600060405180830381600087803b15801561257357600080fd5b505af1158015612587573d6000803e3d6000fd5b505085546004808801546040516340c10f1960e01b81526001600160a01b0393841695506340c10f1994506125c293909116918691016139d3565b600060405180830381600087803b1580156125dc57600080fd5b505af11580156125f0573d6000803e3d6000fd5b505050600185015460408051632f61652360e21b815290516001600160a01b03909216925063bd85948c91600480830192602092919082900301816000875af1158015612641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126659190613918565b508360070154600080516020613b3483398151915284848460405161268c939291906139ec565b60405180910390a26007840180549060006126a6836139ba565b9190505550505050506126b7613063565b565b60006126c3611fc2565b8211156126e25760405162461bcd60e51b8152600401610a2a90613827565b6126ea611fc2565b8210156126f957506001919050565b6000612703612ad8565b9050806008015481601001546127199190613814565b4310159392505050565b600061272d612ad8565b600d0154905090565b600080612741612ad8565b905080600701548311156127675760405162461bcd60e51b8152600401610a2a90613827565b61277083611f8a565b61277c57610c0a613074565b600092835260110160205250604090206002015490565b600080516020613b548339815191526127ab81612afc565b6127b361302d565b60006127bd612ad8565b905080600701546000146128375760405162461bcd60e51b815260206004820152603b60248201527f456d697373696f6e733a2043616e206f6e6c7920626f6f74737472617020656d60448201527a0697373696f6e73207768656e206e657874206379636c65203d203602c1b6064820152608401610a2a565b600781018054906000612849836139ba565b91905055506000612858612db2565b90506000612864613074565b60408051606081018252600e860180548252602080830187815283850186815260078a01546