@gooddollar/goodcontracts
Version:
GoodDollar Contracts
780 lines • 1.31 MB
JSON
{
"contractName": "GReputation",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "Burn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "delegate",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "delegator",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "previousBalance",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newBalance",
"type": "uint256"
}
],
"name": "DelegateVotesChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "Mint",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"inputs": [],
"name": "DELEGATION_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DOMAIN_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "activeBlockchains",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "activeVotes",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_blockNumber",
"type": "uint256"
}
],
"name": "balanceOfAt",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "balances",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "blockchainStates",
"outputs": [
{
"internalType": "bytes32",
"name": "stateHash",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "hashType",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalSupply",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "burn",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "delegates",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "stateHashBalances",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "totalSupplyHistory",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_id",
"type": "string"
},
{
"internalType": "bytes32",
"name": "_hash",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_totalSupply",
"type": "uint256"
}
],
"name": "setBlockchainStateHash",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
}
],
"name": "getVotes",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "uint256",
"name": "_blockNumber",
"type": "uint256"
}
],
"name": "getVotesAt",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "bool",
"name": "_global",
"type": "bool"
},
{
"internalType": "uint256",
"name": "_blockNumber",
"type": "uint256"
}
],
"name": "getVotesAt",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_blockNumber",
"type": "uint256"
}
],
"name": "totalSupplyLocal",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_blockNumber",
"type": "uint256"
}
],
"name": "totalSupplyAt",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_id",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "uint256",
"name": "_blockNumber",
"type": "uint256"
}
],
"name": "getVotesAtBlockchain",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_id",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_blockNumber",
"type": "uint256"
}
],
"name": "totalSupplyAtBlockchain",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_id",
"type": "string"
},
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "uint256",
"name": "_balance",
"type": "uint256"
},
{
"internalType": "bytes32[]",
"name": "_proof",
"type": "bytes32[]"
}
],
"name": "proveBalanceOfAtBlockchain",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
}
],
"name": "delegateOf",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_delegate",
"type": "address"
}
],
"name": "delegateTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "undelegate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_delegate",
"type": "address"
},
{
"internalType": "uint256",
"name": "_nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_expiry",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "_v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "_r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_s",
"type": "bytes32"
}
],
"name": "delegateBySig",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DELEGATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"activeBlockchains\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"activeVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"balanceOfAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"balances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"blockchainStates\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"hashType\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"delegateBySig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"delegateOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"delegateTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getVotesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_global\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getVotesAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getVotesAtBlockchain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_id\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_balance\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"_proof\",\"type\":\"bytes32[]\"}],\"name\":\"proveBalanceOfAtBlockchain\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_id\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_totalSupply\",\"type\":\"uint256\"}],\"name\":\"setBlockchainStateHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"stateHashBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"totalSupplyAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_id\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"totalSupplyAtBlockchain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"totalSupplyHistory\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"totalSupplyLocal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"undelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"balanceOf(address)\":{\"details\":\"return the reputation amount of a given owner\",\"params\":{\"_owner\":\"an address of the owner which we want to get his reputation\"}},\"balanceOfAt(address,uint256)\":{\"details\":\"Queries the balance of `_owner` at a specific `_blockNumber`\",\"params\":{\"_blockNumber\":\"The block number when the balance is queried\",\"_owner\":\"The address from which the balance will be retrieved\"},\"returns\":{\"_0\":\"The balance at `_blockNumber`\"}},\"burn(address,uint256)\":{\"params\":{\"_amount\":\"The quantity of reputation to burn\",\"_user\":\"The address that will lose the reputation\"},\"returns\":{\"_0\":\"True if the reputation are burned correctly\"}},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"_delegate\":\"The address to delegate votes to\",\"_expiry\":\"The time at which to expire the signature\",\"_nonce\":\"The contract state required to match the signature\",\"_r\":\"Half of the ECDSA signature pair\",\"_s\":\"Half of the ECDSA signature pair\",\"_v\":\"The recovery byte of the signature\"}},\"delegateOf(address)\":{\"params\":{\"_user\":\"the delegatee\"},\"returns\":{\"_0\":\"the address of the delegate (can be _user if no delegate or 0x0 if _user doesnt exists)\"}},\"delegateTo(address)\":{\"params\":{\"_delegate\":\"the recipient of votes\"}},\"getVotes(address)\":{\"params\":{\"_user\":\"the user to get active votes for\"},\"returns\":{\"_0\":\"the number of votes\"}},\"getVotesAt(address,bool,uint256)\":{\"params\":{\"_blockNumber\":\"get votes state at specific block\",\"_global\":\"wether to include reputation from other blockchains\",\"_user\":\"the user to get active votes for\"},\"returns\":{\"_0\":\"the number of votes\"}},\"getVotesAt(address,uint256)\":{\"params\":{\"_blockNumber\":\"get votes state at specific block\",\"_user\":\"user to get active votes for\"},\"returns\":{\"_0\":\"the number of votes\"}},\"getVotesAtBlockchain(bytes32,address,uint256)\":{\"params\":{\"_blockNumber\":\"get votes state at specific block\",\"_id\":\"the keccak hash of the blockchain string id\",\"_user\":\"the user to get active votes for\"},\"returns\":{\"_0\":\"the number of votes\"}},\"initialize(address)\":{\"details\":\"initialize\"},\"mint(address,uint256)\":{\"params\":{\"_amount\":\"The quantity of reputation generated\",\"_user\":\"The address that will be assigned the new reputation\"},\"returns\":{\"_0\":\"True if the reputation are generated correctly\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proveBalanceOfAtBlockchain(string,address,uint256,bytes32[])\":{\"details\":\"\\\"rootState\\\" is a special state that can be supplied once, and actually mints reputation on the current blockchain\",\"params\":{\"_balance\":\"the balance we are prooving\",\"_id\":\"the string id of the blockchain we supply proof for\",\"_proof\":\"array of byte32 with proof data (currently merkle tree path)\",\"_user\":\"the user to prove his balance\"},\"returns\":{\"_0\":\"true if proof is valid\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setBlockchainStateHash(string,bytes32,uint256)\":{\"params\":{\"_hash\":\"the state hash\",\"_id\":\"the string name of the blockchain (will be hashed to produce byte32 id)\",\"_totalSupply\":\"total supply of reputation on the specific blockchain\"}},\"totalSupply()\":{\"details\":\"This function makes it easy to get the total number of reputation\",\"returns\":{\"_0\":\"The total number of reputation\"}},\"totalSupplyAt(uint256)\":{\"params\":{\"_blockNumber\":\"get total supply at specific block\"},\"returns\":{\"_0\":\"the totaly supply\"}},\"totalSupplyAtBlockchain(bytes32,uint256)\":{\"params\":{\"_blockNumber\":\"get total supply at specific block\"},\"returns\":{\"_0\":\"the totaly supply\"}},\"totalSupplyLocal(uint256)\":{\"params\":{\"_blockNumber\":\"get total supply at specific block\"},\"returns\":{\"_0\":\"the totaly supply\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"undelegate()\":{\"details\":\"makes user his own delegate\"}},\"title\":\"GReputation extends Reputation with delegation and cross blockchain merkle states\",\"version\":1},\"userdoc\":{\"events\":{\"DelegateVotesChanged(address,address,uint256,uint256)\":{\"notice\":\"An event thats emitted when a delegate account's vote balance changes\"}},\"kind\":\"user\",\"methods\":{\"DELEGATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the delegation struct used by the contract\"},\"DOMAIN_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the contract's domain\"},\"activeBlockchains(uint256)\":{\"notice\":\"list of blockchains having a statehash for easy iteration\"},\"activeVotes(address,uint256)\":{\"notice\":\"map of user non delegatd + delegated votes to user. this is used for actual voting\"},\"blockchainStates(bytes32,uint256)\":{\"notice\":\"mapping from blockchain id hash to list of states\"},\"burn(address,uint256)\":{\"notice\":\"Burns `_amount` reputation from `_owner`\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Delegates votes from signatory to `delegate`\"},\"delegateOf(address)\":{\"notice\":\"returns current delegate of _user\"},\"delegateTo(address)\":{\"notice\":\"delegate votes to another user\"},\"delegates(address)\":{\"notice\":\"keep map of user -> delegate\"},\"getVotes(address)\":{\"notice\":\"returns aggregated active votes in all blockchains and delegated\"},\"getVotesAt(address,bool,uint256)\":{\"notice\":\"get the number of active votes a user holds after delegation (vs the basic balance of reputation he holds)\"},\"getVotesAt(address,uint256)\":{\"notice\":\"returns aggregated active votes in all blockchains and delegated at specific block\"},\"getVotesAtBlockchain(bytes32,address,uint256)\":{\"notice\":\"get the number of active votes a user holds after delegation in specific blockchain\"},\"mint(address,uint256)\":{\"notice\":\"Generates `_amount` reputation that are assigned to `_owner`\"},\"nonces(address)\":{\"notice\":\"A record of states for signing / validating signatures\"},\"proveBalanceOfAtBlockchain(string,address,uint256,bytes32[])\":{\"notice\":\"prove user balance in a specific blockchain state hash\"},\"setBlockchainStateHash(string,bytes32,uint256)\":{\"notice\":\"sets the state hash of a blockchain, can only be called by owner\"},\"stateHashBalances(bytes32,address)\":{\"notice\":\"mapping from stateHash to the user balance can be >0 only after supplying state proof\"},\"totalSupplyAt(uint256)\":{\"notice\":\"returns total supply in all blockchain aggregated\"},\"totalSupplyAtBlockchain(bytes32,uint256)\":{\"notice\":\"returns total supply in a specific blockchain\"},\"totalSupplyLocal(uint256)\":{\"notice\":\"returns total supply in current blockchain (super.balanceOfAt)\"},\"undelegate()\":{\"notice\":\"cancel user delegation\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/governance/GReputation.sol\":\"GReputation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/Interfaces.sol\":{\"keccak256\":\"0xe501727b0e5e15fe639129ab4b1abc59a14ebd3ddd05bb7056ac4fc26a8f3ee7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90d8797740cfd3933ae849f3144e30f9133a55b26634b3efefa8206cd91f62d8\",\"dweb:/ipfs/QmYLeetoyiPej9acnGzjLLwgVnEg4d2Eg1Xb4k3A1mJqj6\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/governance/GReputation.sol\":{\"keccak256\":\"0xf8d07376b04e640ca5231cde096ab24c331b2d390a91bea1fc56bc422501bce6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce3edfcbcb7fc8ae1455f95c4fe1ca72ad40a317e7c837f584d3cf49c8cdc1b5\",\"dweb:/ipfs/QmWdF5ccZLb7oCoA4XLXWfaUEE1oYEEFEnFGLfmySbcm4Z\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/governance/Reputation.sol\":{\"keccak256\":\"0x88ff030c7d958aeeb17f1f140108becba92e4c9582193a2b778bf68d3a162486\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1266112062d6447c1e24cbfefba471194ef1e177e1ca0b5e935ed96c45b568bf\",\"dweb:/ipfs/QmbJ5pNb3uXDvftUWZmCgBLi6id81BdjQCcso1kVqZ5nvP\"]},\"@openzeppelin/contracts-upgradeable/GSN/ContextUpgradeable.sol\":{\"keccak256\":\"0xbbf8a21b9a66c48d45ff771b8563c6df19ba451d63dfb8380a865c1e1f29d1a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://062688aac76e27ab50157a9d645700cf92e3c0d51d3d860be1d2e1a0c04a87d0\",\"dweb:/ipfs/QmfXxppWAiSTeH8YNn2EtMPDgzrLeJ5rjRq8knEbje88mX\"]},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xe422bf8bc61fe71acb27de4631400cdbb9b532df4de4f255eab093ac356f9745\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c2e5ed663c9df8fd44b624cfef92a703803cc72cf356c96e69a6e88c5ce082d\",\"dweb:/ipfs/QmdtPLYhopn3L14o6TCJkwH28o91do8JriAxpFYt67NWGB\"]},\"@openzeppelin/contracts-upgradeable/cryptography/MerkleProofUpgradeable.sol\":{\"keccak256\":\"0x4806316f4167dd87deca0a884bc0e6ed41d9e4926ce10862fead08aa42ebe8da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b862973de986634686a1b026ed3ee7418736efb6e0aa8ba22886400065201ef\",\"dweb:/ipfs/QmUPSZrxKKw6Kj9vW1DS1ZM7AuXCV6JYxPPkgbp9XyDEEb\"]},\"@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol\":{\"keccak256\":\"0xe9ecc18d06bcc5aa48c40a98333540248b6c1c18ecb6262329c06d3f0cbb45ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a81bcbe4f867a4eaf7ec375508a9901ea7517b9854c9a542c242050beda5127\",\"dweb:/ipfs/QmS499VRDhAgMg1pK96PiyRpP3gJZzzMcoNBbe8AV3JNw3\"]},\"@openzeppelin/contracts-upgradeable/proxy/Initializable.sol\":{\"keccak256\":\"0xae7044b7c89ed74327b0979ae6f317c65d87b8d17a42d0c62d698d77d5de5511\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d676c978d8ecee5c4510f045b747d94f3a1381e39feb870d2675d5b6d45a371b\",\"dweb:/ipfs/QmUAokuHWPVAf14QkhPtSdYFyNa8HVje9CBEzwCcxH3xkP\"]}},\"version\":1}",
"bytecode": "0x608060405234801561001057600080fd5b506123e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638d22ea2a1161011a578063a265ba46116100ad578063cbf1304d1161007c578063cbf1304d14610835578063e7a324dc14610861578063f0e18a4314610869578063f2a035e2146108b2578063f2fde38b146108cf57610206565b8063a265ba461461076e578063ac637c7a146107a2578063c3cda520146107c8578063c4d66de81461080f57610206565b8063981b24d0116100e9578063981b24d0146105c05780639ab24eb0146105dd5780639adf01f7146106035780639dc29fac1461074257610206565b80638d22ea2a1461055e5780638da5cb5b1461058457806392ab89bb1461058c5780639324bffa1461059457610206565b8063313ce5671161019d5780636641d9a01161016c5780636641d9a0146104d05780636c087d90146104ed57806370a082311461050a578063715018a6146105305780637ecebe001461053857610206565b8063313ce5671461040457806340c10f19146104225780634ee2cd7e14610462578063587cde1e1461048e57610206565b806318a1851f116101d957806318a1851f1461037257806320606b70146103a457806322ea1d80146103ac5780632337f7b6146103d857610206565b806305bc9e841461020b57806306fdde031461024057806317aeda02146102bd57806318160ddd1461036a575b600080fd5b61022e6004803603604081101561022157600080fd5b50803590602001356108f5565b60408051918252519081900360200190f35b61024861099b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028257818101518382015260200161026a565b50505050905090810190601f1680156102af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610368600480360360608110156102d357600080fd5b8101906020810181356401000000008111156102ee57600080fd5b82018360208201111561030057600080fd5b8035906020019184600183028401116401000000008311171561032257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050823593505050602001356109c2565b005b61022e610bec565b61022e6004803603606081101561038857600080fd5b508035906001600160a01b036020820135169060400135610bfc565b61022e610cce565b61022e600480360360408110156103c257600080fd5b50803590602001356001600160a01b0316610cf2565b61022e600480360360408110156103ee57600080fd5b506001600160a01b038135169060200135610d0f565b61040c610d3d565b6040805160ff9092168252519081900360200190f35b61044e6004803603604081101561043857600080fd5b506001600160a01b038135169060200135610d46565b604080519115158252519081900360200190f35b61022e6004803603604081101561047857600080fd5b506001600160a01b038135169060200135610db4565b6104b4600480360360208110156104a457600080fd5b50356001600160a01b0316610e43565b604080516001600160a01b039092168252519081900360200190f35b61022e600480360360208110156104e657600080fd5b5035610e5e565b61022e6004803603602081101561050357600080fd5b5035610e7c565b61022e6004803603602081101561052057600080fd5b50356001600160a01b0316610e89565b610368610e9d565b61022e6004803603602081101561054e57600080fd5b50356001600160a01b0316610f3f565b6104b46004803603602081101561057457600080fd5b50356001600160a01b0316610f51565b6104b4610f6f565b610368610f7e565b61022e600480360360408110156105aa57600080fd5b506001600160a01b038135169060200135610f8a565b61022e600480360360208110156105d657600080fd5b5035610f98565b61022e600480360360208110156105f357600080fd5b50356001600160a01b0316610fef565b61044e6004803603608081101561061957600080fd5b81019060208101813564010000000081111561063457600080fd5b82018360208201111561064657600080fd5b8035906020019184600183028401116401000000008311171561066857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516956020860135959194509250606081019150604001356401000000008111156106d057600080fd5b8201836020820111156106e257600080fd5b8035906020019184602083028401116401000000008311171561070457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610ffd945050505050565b61044e6004803603604081101561075857600080fd5b506001600160a01b0381351690602001356111ee565b61022e6004803603606081101561078457600080fd5b506001600160a01b0381351690602081013515159060400135611252565b610368600480360360208110156107b857600080fd5b50356001600160a01b03166112c4565b610368600480360360c08110156107de57600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a001356112d1565b6103686004803603602081101561082557600080fd5b50356001600160a01b031661156c565b61022e6004803603604081101561084b57600080fd5b506001600160a01b03813516906020013561162a565b61022e611643565b61088c6004803603604081101561087f57600080fd5b5080359060200135611667565b604080519485526020850193909352838301919091526060830152519081900360800190f35b61022e600480360360208110156108c857600080fd5b50356116aa565b610368600480360360208110156108e557600080fd5b50356001600160a01b03166116b5565b60008281526069602052604081208054829061091657600092505050610995565b508054600019015b60008112610958578382828154811061093357fe5b9060005260206000209060090201600301541161094f57610958565b6000190161091e565b600081121561096c57600092505050610995565b600082828154811061097a57fe5b90600052602060002090600902019050806002015493505050505b92915050565b6040518060400160405280600b81526020016a23a932b83aba30ba34b7b760a91b81525081565b6109ca6117ae565b6033546001600160a01b03908116911614610a1a576040805162461bcd60e51b81526020600482018190526024820152600080516020612367833981519152604482015290519081900360640190fd5b8251602080850191909120604080518082019091526009815268726f6f74537461746560b81b9201919091527f0df2f1ec68f7ac2e4205051c96e8cfd7b54c89c139839c13d3d59548ae1488a18114801580610a7c5750610a7a436117b2565b155b610acd576040805162461bcd60e51b815260206004820152601960248201527f726f6f74537461746520616c7265616479206372656174656400000000000000604482015290519081900360640190fd5b60005b81158015610adf5750606b5481105b15610b105782606b8281548110610af257fe5b90600052602060002001541415610b0857610b10565b600101610ad0565b81158015610b1f5750606b5481145b15610b5a57606b80546001810182556000919091527fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b4018390555b8115610b6b57610b6b606785611803565b610b736121e1565b858152604080820186815243606084019081526000878152606960209081529381208054600181810183559183529185902086516009909302019182559385015193810193909355905160028301555160038201556080820151829190610be09060048301906005612218565b50505050505050505050565b6000610bf743610f98565b905090565b6000838152606960205260408120805480610c1c57600092505050610cc7565b6000826001830381548110610c2d57fe5b906000526020600020906009020190506001820391505b60008212610c895784816003015411610c5c57610c89565b826001830381548110610c6b57fe5b90600052602060002090600902019050818060019003925050610c44565b6000821215610c9e5760009350505050610cc7565b546000908152606a602090815260408083206001600160a01b0389168452909152902054925050505b9392505050565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b606a60209081526000928352604080842090915290825290205481565b606d6020528160005260406000208181548110610d2857fe5b90600052602060002001600091509150505481565b60655460ff1681565b6000610d506117ae565b6033546001600160a01b03908116911614610da0576040805162461bcd60e51b81526020600482018190526024820152600080516020612367833981519152604482015290519081900360640190fd5b610daa8383611907565b5060019392505050565b6001600160a01b0382166000908152606660205260408120541580610e0d57506001600160a01b03831660009081526066602052604081208054849290610df757fe5b90600052602060002001546001600160801b0316115b15610e1a57506000610995565b6001600160a01b0383166000908152606660205260409020610e3c9083611997565b9050610995565b606c602052600090815260409020546001600160a01b031681565b60678181548110610e6b57fe5b600091825260209091200154905081565b606b8181548110610e6b57fe5b6000610e958243610db4565b90505b919050565b610ea56117ae565b6033546001600160a01b03908116911614610ef5576040805162461bcd60e51b81526020600482018190526024820152600080516020612367833981519152604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b60686020526000908152604090205481565b6001600160a01b039081166000908152606c60205260409020541690565b6033546001600160a01b031690565b610f883333611a97565b565b6000610cc783600184611252565b600080610fa4836117b2565b905060005b606b54811015610fe857610fde610fd7606b8381548110610fc657fe5b9060005260206000200154866108f5565b8390611be1565b9150600101610fa9565b5092915050565b6000610e9582600143611252565b8351602080860191909120600081815260699092526040822054611068576040805162461bcd60e51b815260206004820152601c60248201527f6e6f20737461746520666f756e6420666f7220676976656e205f696400000000604482015290519081900360640190fd5b60008181526069602052604081208054600019810190811061108657fe5b60009182526020808320600990920290910154808352606a825260408084206001600160a01b038b1685529092529120549091501561110c576040805162461bcd60e51b815260206004820152601860248201527f73746174654861736820616c72656164792070726f7665640000000000000000604482015290519081900360640190fd5b600061111a87878488611c3b565b91505080611166576040805162461bcd60e51b815260206004820152601460248201527334b73b30b634b21036b2b935b63290383937b7b360611b604482015290519081900360640190fd5b604080518082019091526009815268726f6f74537461746560b81b6020909101527f0df2f1ec68f7ac2e4205051c96e8cfd7b54c89c139839c13d3d59548ae1488a18314156111bb576111b98787611907565b505b506000908152606a602090815260408083206001600160a01b038916845290915290208490555060019050949350505050565b60006111f86117ae565b6033546001600160a01b03908116911614611248576040805162461bcd60e51b81526020600482018190526024820152600080516020612367833981519152604482015290519081900360640190fd5b610daa8383611c86565b6001600160a01b0383166000908152606d6020526040812081906112769084611997565b905083156112bc5760005b606b548110156112ba576112b0610fd7606b838154811061129e57fe5b90600052602060002001548887610bfc565b9150600101611281565b505b949350505050565b6112ce3382611a97565b50565b60408051808201909152600b81526a23a932b83aba30ba34b7b760a91b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f6d6957b3a4022b7a24cdd877ade4bdbb5b5a4e21c5304908c958d003c049de6c611340611d15565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fff41620983935eb4d4a3c7384a066ca8c1d10cef9a5eca9eb97ca735cd14a75560c08401526001600160a01b038b1660e084015261010083018a90526101208084018a9052825180850390910181526101408401835280519085012061190160f01b6101608501526101628401829052610182808501829052835180860390910181526101a285018085528151918701919091206000918290526101c2860180865281905260ff8b166101e287015261020286018a90526102228601899052935192965090949293909260019261024280840193601f198301929081900390910190855afa158015611473573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114c55760405162461bcd60e51b815260040180806020018281038252602d815260200180612387602d913960400191505060405180910390fd5b6001600160a01b038116600090815260686020526040902080546001810190915589146115235760405162461bcd60e51b815260040180806020018281038252602981526020018061228a6029913960400191505060405180910390fd5b874211156115625760405162461bcd60e51b815260040180806020018281038252602d8152602001806122d9602d913960400191505060405180910390fd5b610be0818b611a97565b600054610100900460ff16806115855750611585611d19565b80611593575060005460ff16155b6115ce5760405162461bcd60e51b815260040180806020018281038252602e815260200180612339602e913960400191505060405180910390fd5b600054610100900460ff161580156115f9576000805460ff1961ff0019909116610100171660011790555b6065805460ff1916905561160b611d1f565b611614826116b5565b8015611626576000805461ff00191690555b5050565b60666020528160005260406000208181548110610d2857fe5b7fff41620983935eb4d4a3c7384a066ca8c1d10cef9a5eca9eb97ca735cd14a75581565b6069602052816000526040600020818154811061168057fe5b60009182526020909120600990910201805460018201546002830154600390930154919450925084565b6000610e95826117b2565b6116bd6117ae565b6033546001600160a01b0390811691161461170d576040805162461bcd60e51b81526020600482018190526024820152600080516020612367833981519152604482015290519081900360640190fd5b6001600160a01b0381166117525760405162461bcd60e51b81526004018080602001828103825260268152602001806122b36026913960400191505060405180910390fd5b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60675460009015806117e457508160676000815481106117ce57fe5b90600052602060002001546001600160801b0316115b156117f157506000610e98565b6117fc606783611997565b9050610e98565b80816001600160801b031614611856576040805162461bcd60e51b815260206004820152601360248201527272657075746174696f6e206f766572666c6f7760681b604482015290519081900360640190fd5b815415806118895750815443908390600019810190811061187357fe5b90600052602060002001546001600160801b0316105b156118b75781546001810183556000838152602090206001600160801b034316608084901b17910155611626565b608081901b6001600160801b03836001858054905003815481106118d757fe5b90600052602060002001541617826001848054905003815481106118f757fe5b6000918252602090912001555050565b60006119138383611e18565b506001600160a01b038084166000908152606c6020526040902054168061193a578361193c565b805b6001600160a01b03858116600090815260