Overview ERC20
PRICE
$34.21618107025565

ON-CHAIN MARKET CAP n/a

Total Supply:
4,588.96 QUARRY

Holders:
70
Profile Summary
Blockchain:
Ethereum (1)


Decimals:
18
Contract Source Code Verified (Partial Match)
Contract Name:
Quarry

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Created At:
Mon, 15 Apr 2024 17:06:35 GMT
AccessControl.sol
@openzeppelin
contracts
access
AccessControl.sol


Contract ABI
[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "INVALID_ADDRESS",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "PAUSED",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "ExcludeFromFee",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "IncludeFromFee",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      }
    ],
    "name": "LiquidityFeeReceiver",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      }
    ],
    "name": "MarketingFeeReceiver",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Paused",
    "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": false,
        "internalType": "uint256",
        "name": "liquidityFee",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "marketingFee",
        "type": "uint256"
      }
    ],
    "name": "TaxFee",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Unpaused",
    "type": "event"
  },
  {
    "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": "MULTIPLIER",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "PAUSER_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      }
    ],
    "name": "allowance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "burnFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "subtractedValue",
        "type": "uint256"
      }
    ],
    "name": "decreaseAllowance",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "excludeFromFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleAdmin",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "getRoleMember",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleMemberCount",
    "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": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "includeFromFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "addedValue",
        "type": "uint256"
      }
    ],
    "name": "increaseAllowance",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "isExcludedFromFee",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "liquidityFeeReceiver",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "marketingFeeReceiver",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "mint",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "paused",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "contract IERC20",
        "name": "token",
        "type": "address"
      }
    ],
    "name": "recoverERC20",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "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": "address",
        "name": "receiver",
        "type": "address"
      }
    ],
    "name": "setLiquidityFeeReceiver",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      }
    ],
    "name": "setMarketingFeeReceiver",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "liquidityFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "marketingFee",
        "type": "uint256"
      }
    ],
    "name": "setTaxFee",
    "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": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "taxInfo",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "liquidityFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "marketingFee",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "transfer",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "unpause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280600681526020016551756172727960d01b8152506040518060400160405280600681526020016551554152525960d01b8152508181816005908162000063919062000458565b50600662000072828262000458565b50506007805460ff19169055506200008c6000336200013f565b620000b87f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336200013f565b620000e47f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a336200013f565b50620000fd90503369043c33c19375648000006200014f565b6113886008556109c4600955336000908152600c60205260408082208054600160ff199182168117909255308452919092208054909116909117905562000546565b6200014b828262000225565b5050565b6001600160a01b038216620001aa5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b620001b86000838362000268565b8060046000828254620001cc919062000524565b90915550506001600160a01b0382166000818152600260209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6200023c8282620002a260201b62000f301760201c565b60008281526001602090815260409091206200026391839062000fb462000342821b17901c565b505050565b6001600160a01b0383161580159062000283575060075460ff165b156200026357604051632a6ab56360e21b815260040160405180910390fd5b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200014b576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002fe3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000359836001600160a01b03841662000362565b90505b92915050565b6000818152600183016020526040812054620003ab575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200035c565b5060006200035c565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003df57607f821691505b6020821081036200040057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200026357600081815260208120601f850160051c810160208610156200042f5750805b601f850160051c820191505b8181101562000450578281556001016200043b565b505050505050565b81516001600160401b03811115620004745762000474620003b4565b6200048c81620004858454620003ca565b8462000406565b602080601f831160018114620004c45760008415620004ab5750858301515b600019600386901b1c1916600185901b17855562000450565b600085815260208120601f198616915b82811015620004f557888601518255948401946001909101908401620004d4565b5085821015620005145787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200035c57634e487b7160e01b600052601160045260246000fd5b6124b580620005566000396000f3fe6080604052600436106102345760003560e01c806379cc67901161012e578063c5528490116100ab578063e63ab1e91161006f578063e63ab1e9146106bc578063e934da8c146106f0578063e96fada214610720578063edafd4ad14610740578063ff5118281461076057600080fd5b8063c552849014610608578063ca15c87314610628578063d539139314610648578063d547741f1461067c578063dd62ed3e1461069c57600080fd5b80639e8c708e116100f25780639e8c708e14610573578063a217fddf14610593578063a457c2d7146105a8578063a9059cbb146105c8578063bfa21d6a146105e857600080fd5b806379cc6790146104d15780638456cb59146104f15780639010d07c1461050657806391d148541461053e57806395d89b411461055e57600080fd5b80633190bb8a116101bc57806342966c681161018057806342966c6814610413578063437823ec146104335780635342acb4146104535780635c975abb1461048357806370a082311461049b57600080fd5b80633190bb8a1461037e57806336568abe1461039e57806339509351146103be5780633f4ba83a146103de57806340c10f19146103f357600080fd5b806318160ddd1161020357806318160ddd146102db57806323b872dd146102f0578063248a9ca3146103105780632f2ff15d14610340578063313ce5671461036257600080fd5b806301ffc9a714610240578063059f8b161461027557806306fdde0314610299578063095ea7b3146102bb57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061026061025b3660046120d5565b610780565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b5061028b61271081565b60405190815260200161026c565b3480156102a557600080fd5b506102ae6107ab565b60405161026c9190612123565b3480156102c757600080fd5b506102606102d636600461216b565b61083d565b3480156102e757600080fd5b5060045461028b565b3480156102fc57600080fd5b5061026061030b366004612197565b610855565b34801561031c57600080fd5b5061028b61032b3660046121d8565b60009081526020819052604090206001015490565b34801561034c57600080fd5b5061036061035b3660046121f1565b610879565b005b34801561036e57600080fd5b506040516012815260200161026c565b34801561038a57600080fd5b50610360610399366004612221565b6108a3565b3480156103aa57600080fd5b506103606103b93660046121f1565b610929565b3480156103ca57600080fd5b506102606103d936600461216b565b6109ac565b3480156103ea57600080fd5b506103606109ce565b3480156103ff57600080fd5b5061036061040e36600461216b565b610a74565b34801561041f57600080fd5b5061036061042e3660046121d8565b610b13565b34801561043f57600080fd5b5061036061044e366004612221565b610b20565b34801561045f57600080fd5b5061026061046e366004612221565b600c6020526000908152604090205460ff1681565b34801561048f57600080fd5b5060075460ff16610260565b3480156104a757600080fd5b5061028b6104b6366004612221565b6001600160a01b031660009081526002602052604090205490565b3480156104dd57600080fd5b506103606104ec36600461216b565b610b7e565b3480156104fd57600080fd5b50610360610b93565b34801561051257600080fd5b5061052661052136600461223e565b610c37565b6040516001600160a01b03909116815260200161026c565b34801561054a57600080fd5b506102606105593660046121f1565b610c56565b34801561056a57600080fd5b506102ae610c7f565b34801561057f57600080fd5b5061036061058e366004612221565b610c8e565b34801561059f57600080fd5b5061028b600081565b3480156105b457600080fd5b506102606105c336600461216b565b610d15565b3480156105d457600080fd5b506102606105e336600461216b565b610d90565b3480156105f457600080fd5b50600a54610526906001600160a01b031681565b34801561061457600080fd5b5061036061062336600461223e565b610d9e565b34801561063457600080fd5b5061028b6106433660046121d8565b610def565b34801561065457600080fd5b5061028b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b34801561068857600080fd5b506103606106973660046121f1565b610e06565b3480156106a857600080fd5b5061028b6106b7366004612260565b610e2b565b3480156106c857600080fd5b5061028b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156106fc57600080fd5b5060085460095461070b919082565b6040805192835260208301919091520161026c565b34801561072c57600080fd5b50600b54610526906001600160a01b031681565b34801561074c57600080fd5b5061036061075b366004612221565b610e56565b34801561076c57600080fd5b5061036061077b366004612221565b610ed5565b60006001600160e01b03198216635a05180f60e01b14806107a557506107a582610fc9565b92915050565b6060600580546107ba9061228e565b80601f01602080910402602001604051908101604052809291908181526020018280546107e69061228e565b80156108335780601f1061080857610100808354040283529160200191610833565b820191906000526020600020905b81548152906001019060200180831161081657829003601f168201915b5050505050905090565b60003361084b818585610ffe565b5060019392505050565b600033610863858285611122565b61086e85858561119c565b506001949350505050565b60008281526020819052604090206001015461089481611245565b61089e838361124f565b505050565b6108ad6000611245565b6001600160a01b0381166108d457604051635963709b60e01b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040519081527fd86a94e9f6e34cdc587cf54e698e6e003871c56e3571b069607de9a439ee298a906020015b60405180910390a150565b6001600160a01b038116331461099e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6109a88282611271565b5050565b60003361084b8185856109bf8383610e2b565b6109c991906122de565b610ffe565b6109f87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610c56565b610a6a5760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e7061757365000000000000006064820152608401610995565b610a72611293565b565b610a9e7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610c56565b610b095760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608401610995565b6109a882826112e5565b610b1d33826113b2565b50565b610b2a6000611245565b6001600160a01b0381166000818152600c6020908152604091829020805460ff1916600117905590519182527f58c3e0504c69d3a92726966f152a771e0f8f6ad4daca1ae9055a38aba1fd2b62910161091e565b610b89823383611122565b6109a882826113b2565b610bbd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610c56565b610c2f5760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f2070617573650000000000000000006064820152608401610995565b610a726114f2565b6000828152600160205260408120610c4f908361152f565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600680546107ba9061228e565b610c986000611245565b610b1d336040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0491906122f1565b6001600160a01b038416919061153b565b60003381610d238286610e2b565b905083811015610d835760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610995565b61086e8286868403610ffe565b60003361084b81858561119c565b610da86000611245565b6008829055600981905560408051838152602081018390527f4fc9f7f2d8e6847e86da6626539ef599bf7dacffe9f6b5249b75e72c2d4fd87c910160405180910390a15050565b60008181526001602052604081206107a59061158d565b600082815260208190526040902060010154610e2181611245565b61089e8383611271565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610e606000611245565b6001600160a01b038116610e8757604051635963709b60e01b815260040160405180910390fd5b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527fe24d5b3da94f9e2fad677d54b9f9b0de38fd22bee66de79d6b4df38315bbd8589060200161091e565b610edf6000611245565b6001600160a01b0381166000818152600c6020908152604091829020805460ff1916905590519182527f172447a0c608ce87868bcdb50bf4e0e6fbd1bcc397b343b9ea9d62a8825900a4910161091e565b610f3a8282610c56565b6109a8576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610f703390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610c4f836001600160a01b038416611597565b60006001600160e01b03198216637965db0b60e01b14806107a557506301ffc9a760e01b6001600160e01b03198316146107a5565b6001600160a01b0383166110605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610995565b6001600160a01b0382166110c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610995565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061112e8484610e2b565b9050600019811461119657818110156111895760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610995565b6111968484848403610ffe565b50505050565b6111a683836115e6565b156111eb57600854600090612710906111bf908461230a565b6111c99190612321565b600a5492819003929091506111e99085906001600160a01b0316836116d4565b505b6111f5838361188a565b1561123a576009546000906127109061120e908461230a565b6112189190612321565b600b5492819003929091506112389085906001600160a01b0316836116d4565b505b61089e8383836116d4565b610b1d813361194e565b6112598282610f30565b600082815260016020526040902061089e9082610fb4565b61127b82826119a7565b600082815260016020526040902061089e9082611a0c565b61129b611a21565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b03821661133b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610995565b61134760008383611a6a565b806004600082825461135991906122de565b90915550506001600160a01b0382166000818152600260209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166114125760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610995565b61141e82600083611a6a565b6001600160a01b038216600090815260026020526040902054818110156114925760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610995565b6001600160a01b03831660008181526002602090815260408083208686039055600480548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6114fa611aa2565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112c83390565b6000610c4f8383611ae8565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261089e908490611b12565b60006107a5825490565b60008181526001830160205260408120546115de575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107a5565b5060006107a5565b6001600160a01b0382166000908152600c602052604081205460ff168061162557506001600160a01b0382166000908152600c602052604090205460ff165b15611632575060006107a5565b600061166d8360405180604001604052806008815260200167746f6b656e30282960c01b815250856001600160a01b0316630dfe1681611be7565b905060006116aa8460405180604001604052806008815260200167746f6b656e31282960c01b815250866001600160a01b031663d21220a7611be7565b90506001600160a01b0382163014806116cb57506001600160a01b03811630145b95945050505050565b6001600160a01b0383166117385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610995565b6001600160a01b03821661179a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610995565b6117a5838383611a6a565b6001600160a01b0383166000908152600260205260409020548181101561181d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610995565b6001600160a01b0380851660008181526002602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061187d9086815260200190565b60405180910390a3611196565b6001600160a01b0382166000908152600c602052604081205460ff16806118c957506001600160a01b0382166000908152600c602052604090205460ff165b156118d6575060006107a5565b60006119118460405180604001604052806008815260200167746f6b656e30282960c01b815250866001600160a01b0316630dfe1681611be7565b905060006116aa8560405180604001604052806008815260200167746f6b656e31282960c01b815250876001600160a01b031663d21220a7611be7565b6119588282610c56565b6109a85761196581611d11565b611970836020611d23565b604051602001611981929190612343565b60408051601f198184030181529082905262461bcd60e51b825261099591600401612123565b6119b18282610c56565b156109a8576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610c4f836001600160a01b038416611ebf565b60075460ff16610a725760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610995565b6001600160a01b03831615801590611a84575060075460ff165b1561089e57604051632a6ab56360e21b815260040160405180910390fd5b60075460ff1615610a725760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610995565b6000826000018281548110611aff57611aff6123b8565b9060005260206000200154905092915050565b6000611b67826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611fb29092919063ffffffff16565b9050805160001480611b88575080806020019051810190611b8891906123ce565b61089e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610995565b6040805160048152602481019182905260009182916001600160a01b03881691611c129088906123f0565b60408051918290039091206020830180516001600160e01b03166001600160e01b031990921691909117905251611c4991906123f0565b6000604051808303816000865af19150503d8060008114611c86576040519150601f19603f3d011682016040523d82523d6000602084013e611c8b565b606091505b505090508015611d0357853b63ffffffff811615611d015784846040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf8919061240c565b92505050611d09565b505b60009150505b949350505050565b60606107a56001600160a01b03831660145b60606000611d3283600261230a565b611d3d9060026122de565b67ffffffffffffffff811115611d5557611d55612429565b6040519080825280601f01601f191660200182016040528015611d7f576020820181803683370190505b509050600360fc1b81600081518110611d9a57611d9a6123b8565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611dc957611dc96123b8565b60200101906001600160f81b031916908160001a9053506000611ded84600261230a565b611df89060016122de565b90505b6001811115611e70576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611e2c57611e2c6123b8565b1a60f81b828281518110611e4257611e426123b8565b60200101906001600160f81b031916908160001a90535060049490941c93611e698161243f565b9050611dfb565b508315610c4f5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610995565b60008181526001830160205260408120548015611fa8576000611ee3600183612456565b8554909150600090611ef790600190612456565b9050818114611f5c576000866000018281548110611f1757611f176123b8565b9060005260206000200154905080876000018481548110611f3a57611f3a6123b8565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611f6d57611f6d612469565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107a5565b60009150506107a5565b6060611d09848460008585600080866001600160a01b03168587604051611fd991906123f0565b60006040518083038185875af1925050503d8060008114612016576040519150601f19603f3d011682016040523d82523d6000602084013e61201b565b606091505b509150915061202c87838387612037565b979650505050505050565b606083156120a657825160000361209f576001600160a01b0385163b61209f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610995565b5081611d09565b611d0983838151156120bb5781518083602001fd5b8060405162461bcd60e51b81526004016109959190612123565b6000602082840312156120e757600080fd5b81356001600160e01b031981168114610c4f57600080fd5b60005b8381101561211a578181015183820152602001612102565b50506000910152565b60208152600082518060208401526121428160408501602087016120ff565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610b1d57600080fd5b6000806040838503121561217e57600080fd5b823561218981612156565b946020939093013593505050565b6000806000606084860312156121ac57600080fd5b83356121b781612156565b925060208401356121c781612156565b929592945050506040919091013590565b6000602082840312156121ea57600080fd5b5035919050565b6000806040838503121561220457600080fd5b82359150602083013561221681612156565b809150509250929050565b60006020828403121561223357600080fd5b8135610c4f81612156565b6000806040838503121561225157600080fd5b50508035926020909101359150565b6000806040838503121561227357600080fd5b823561227e81612156565b9150602083013561221681612156565b600181811c908216806122a257607f821691505b6020821081036122c257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107a5576107a56122c8565b60006020828403121561230357600080fd5b5051919050565b80820281158282048414176107a5576107a56122c8565b60008261233e57634e487b7160e01b600052601260045260246000fd5b500490565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161237b8160178501602088016120ff565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516123ac8160288401602088016120ff565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156123e057600080fd5b81518015158114610c4f57600080fd5b600082516124028184602087016120ff565b9190910192915050565b60006020828403121561241e57600080fd5b8151610c4f81612156565b634e487b7160e01b600052604160045260246000fd5b60008161244e5761244e6122c8565b506000190190565b818103818111156107a5576107a56122c8565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220239a4bc20b216a8d5f02ce0c4294819e7878d2d2a75e9bf2591321d4a74a592364736f6c63430008110033