@credenza-web3/contracts
Version:
Credenza Contracts
1,205 lines • 83.5 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "CredenzaERC1155Contract",
"sourceName": "contracts/tokens/CredenzaERC1155Contract.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
}
],
"name": "TransferBatch",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "TransferSingle",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "value",
"type": "string"
},
{
"indexed": true,
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "URI",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "addAvailableCurrencyTokenContract",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "addOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "accounts",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
}
],
"name": "balanceOfBatch",
"outputs": [
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "requestedAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
}
],
"name": "buyWithEther",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "requestedAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "address",
"name": "currencyTokenContract",
"type": "address"
}
],
"name": "buyWithToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "requestedAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
}
],
"name": "buyWithToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "clearOwners",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getAvailableCurrencyTokenContractsList",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getBeneficiaryAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDefaultCurrencyTokenContract",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDescription",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "getDropAvailableAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getDropAvailableTotalAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getDropPerAddressLimit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getDropTotalLimit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "getDroppedAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getDroppedTotalAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getOwners",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "getPriceEther",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "getPriceFiat",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "currencyContract",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "getPriceToken",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "getPriceToken",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getTrustedForwarder",
"outputs": [
{
"internalType": "address",
"name": "forwarder",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getVersion",
"outputs": [
{
"internalType": "string",
"name": "version",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "image",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "isAvailableCurrencyTokenContract",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "isOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "forwarder",
"type": "address"
}
],
"name": "isTrustedForwarder",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"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": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "ownerTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "removeAvailableCurrencyTokenContract",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "removeOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "requestToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "safeBatchTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "addr",
"type": "address"
}
],
"name": "setBeneficiaryAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenContract",
"type": "address"
}
],
"name": "setDefaultCurrencyTokenContractAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "uri",
"type": "string"
}
],
"name": "setDefaultUri",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "description",
"type": "string"
}
],
"name": "setDescription",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "setDropPerAddressLimit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "setDropTotalLimit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "newImage",
"type": "string"
}
],
"name": "setImage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "newName",
"type": "string"
}
],
"name": "setName",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "setPriceEther",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "setPriceFiat",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "setPriceToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "currencyContract",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "setPriceToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "newSymbol",
"type": "string"
}
],
"name": "setSymbol",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_forwarder",
"type": "address"
}
],
"name": "setTrustedForwarder",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "string",
"name": "uri",
"type": "string"
}
],
"name": "setUri",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
},
{
"internalType": "string",
"name": "uri",
"type": "string"
}
],
"name": "setUriByIndex",
"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": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "uri",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "uriByIndex",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60a06040525f6080908152601490620000199082620002a8565b5060408051602081019091525f8152601590620000379082620002a8565b5060408051602081019091525f8152601690620000559082620002a8565b5034801562000062575f80fd5b5060408051602081019091525f81526200007c8162000097565b50620000916200008b620000a9565b620000b9565b62000370565b6002620000a58282620002a8565b5050565b5f620000b4620001d3565b905090565b6004541580620000ef5750620000ef620000d2620000a9565b6001600160a01b03165f9081526003602052604090205460ff1690565b6200014b5760405162461bcd60e51b815260206004820152602260248201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604482015261371760f11b606482015260840160405180910390fd5b6001600160a01b0381165f9081526003602052604090205460ff16620001d0576001600160a01b0381165f818152600360205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790555b50565b5f60143610801590620001f057506006546001600160a01b031633145b1562000203575060131936013560601c90565b503390565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200023157607f821691505b6020821081036200025057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002a3575f81815260208120601f850160051c810160208610156200027e5750805b601f850160051c820191505b818110156200029f578281556001016200028a565b5050505b505050565b81516001600160401b03811115620002c457620002c462000208565b620002dc81620002d584546200021c565b8462000256565b602080601f83116001811462000312575f8415620002fa5750858301515b5f19600386901b1c1916600185901b1785556200029f565b5f85815260208120601f198616915b82811015620003425788860151825594840194600190910190840162000321565b50858210156200036057878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b613717806200037e5f395ff3fe60806040526004361061037a575f3560e01c806371adb5e6116101d3578063b84c8246116100fd578063d36223f11161009d578063e985e9c51161006d578063e985e9c514610af6578063ec6be06e14610b3d578063f242432a14610b5c578063f3ccaac014610b7b575f80fd5b8063d36223f114610a6e578063d93f5bed14610a8d578063da74222814610aac578063e1461f1214610acb575f80fd5b8063ce1b815f116100d8578063ce1b815f146109f6578063ce1fc87f14610a13578063d114c9dc14610a32578063d1eff89514610a51575f80fd5b8063b84c82461461098d578063c47f0027146109ac578063cafc72d3146109cb575f80fd5b806390c3f38f11610173578063a4e4638511610143578063a4e46385146108ed578063adfadad31461090c578063b33a599f14610937578063b68de97414610956575f80fd5b806390c3f38f1461088757806395d89b41146108a6578063a0e67e2b146108ba578063a22cb465146108ce575f80fd5b80638003e27f116101ae5780638003e27f1461081557806380dc439e1461083657806388d0f86a146108495780638e1b5aa914610868575f80fd5b806371adb5e6146107b8578063724e5c17146107d7578063782f08ae146107f6575f80fd5b80632217e975116102b45780634e1273f411610254578063572b6c0511610224578063572b6c0514610721578063578680be1461074f578063609d58ad1461076e5780637065cb4814610799575f80fd5b80634e1273f4146106a35780634fe50531146106cf5780635260f5e6146106ee57806355349e6714610702575f80fd5b8063346b327b1161028f578063346b327b146106275780633a932dba146106465780633de4fdc814610665578063466a18de14610684575f80fd5b80632217e975146105b25780632eb2c2d6146105d15780632f54bf6e146105f0575f80fd5b8063156e29f61161031f578063177ed0f3116102fa578063177ed0f31461051f578063192c17561461053e5780631a0925411461057f5780631abe7cb314610593575f80fd5b8063156e29f6146104ae57806316bef596146104cf578063173825d914610500575f80fd5b8063031f5c871161035a578063031f5c871461040a57806306fdde03146104295780630d8e6e2c1461044a5780630e89341c1461048f575f80fd5b8062fbe0c51461037e578062fdd58e146103bc57806301ffc9a7146103db575b5f80fd5b348015610389575f80fd5b506103a9610398366004612ae5565b5f908152600f602052604090205490565b6040519081526020015b60405180910390f35b3480156103c7575f80fd5b506103a96103d6366004612b10565b610b8f565b3480156103e6575f80fd5b506103fa6103f5366004612b4f565b610c26565b60405190151581526020016103b3565b348015610415575f80fd5b506103a9610424366004612b10565b610c75565b348015610434575f80fd5b5061043d610c9c565b6040516103b39190612bad565b348015610455575f80fd5b5060408051808201909152601f81527f43726564656e7a6145524331313535436f6e7472616374207620322e312e3000602082015261043d565b34801561049a575f80fd5b5061043d6104a9366004612ae5565b610d28565b3480156104b9575f80fd5b506104cd6104c8366004612bbf565b610e90565b005b3480156104da575f80fd5b50600a546001600160a01b03165b6040516001600160a01b0390911681526020016103b3565b34801561050b575f80fd5b506104cd61051a366004612bf1565b610ee0565b34801561052a575f80fd5b506103a9610539366004612ae5565b610fa5565b348015610549575f80fd5b506103a9610558366004612c0c565b5f9182526010602090815260408084206001600160a01b0393909316845291905290205490565b34801561058a575f80fd5b5061043d610fbd565b34801561059e575f80fd5b506104cd6105ad366004612c3a565b61104d565b3480156105bd575f80fd5b506103a96105cc366004612ae5565b61108f565b3480156105dc575f80fd5b506104cd6105eb366004612d9c565b6110db565b3480156105fb575f80fd5b506103fa61060a366004612bf1565b6001600160a01b03165f9081526003602052604090205460ff1690565b348015610632575f80fd5b506104cd610641366004612e43565b611139565b348015610651575f80fd5b506104cd610660366004612bf1565b611277565b348015610670575f80fd5b506104cd61067f366004612bf1565b6112c8565b34801561068f575f80fd5b506104cd61069e366004612e79565b61137d565b3480156106ae575f80fd5b506106c26106bd366004612eb3565b6113be565b6040516103b39190612fb3565b3480156106da575f80fd5b506104cd6106e9366004612c3a565b6114e6565b3480156106f9575f80fd5b506104cd611528565b34801561070d575f80fd5b506104cd61071c366004612c3a565b6115cf565b34801561072c575f80fd5b506103fa61073b366004612bf1565b6006546001600160a01b0391821691161490565b34801561075a575f80fd5b506104cd610769366004612c3a565b611611565b348015610779575f80fd5b506103a9610788366004612ae5565b5f908152600e602052604090205490565b3480156107a4575f80fd5b506104cd6107b3366004612bf1565b611659565b3480156107c3575f80fd5b506104cd6107d2366004612e79565b61170e565b3480156107e2575f80fd5b506104cd6107f1366004612fc5565b61174b565b348015610801575f80fd5b506104cd61081036600461300c565b611788565b348015610820575f80fd5b506108296117db565b6040516103b39190613046565b6104cd610844366004612e43565b61183a565b348015610854575f80fd5b506104cd610863366004612c3a565b611895565b348015610873575f80fd5b506103a9610882366004612c0c565b6118d7565b348015610892575f80fd5b506104cd6108a1366004612e79565b61196b565b3480156108b1575f80fd5b5061043d6119a8565b3480156108c5575f80fd5b506108296119b5565b3480156108d9575f80fd5b506104cd6108e836600461309f565b611a13565b3480156108f8575f80fd5b5061043d610907366004612c3a565b611a25565b348015610917575f80fd5b506103a9610926366004612ae5565b5f9081526008602052604090205490565b348015610942575f80fd5b506104cd610951366004612bf1565b611b87565b348015610961575f80fd5b506103fa610970366004612bf1565b6001600160a01b03165f908152600b602052604090205460ff1690565b348015610998575f80fd5b506104cd6109a7366004612e79565b611c49565b3480156109b7575f80fd5b506104cd6109c6366004612e79565b611c86565b3480156109d6575f80fd5b506103a96109e5366004612ae5565b5f9081526011602052604090205490565b348015610a01575f80fd5b506006546001600160a01b03166104e8565b348015610a1e575f80fd5b506104cd610a2d3660046130cb565b611cc3565b348015610a3d575f80fd5b506104cd610a4c366004613117565b611d1c565b348015610a5c575f80fd5b50600d546001600160a01b03166104e8565b348015610a79575f80fd5b506104cd610a88366004612e43565b611d75565b348015610a98575f80fd5b506104cd610aa7366004612bbf565b611dd0565b348015610ab7575f80fd5b506104cd610ac6366004612bf1565b611e26565b348015610ad6575f80fd5b506103a9610ae5366004612ae5565b5f9081526007602052604090205490565b348015610b01575f80fd5b506103fa610b1036600461315a565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205460ff1690565b348015610b48575f80fd5b506104cd610b57366004612bf1565b611e75565b348015610b67575f80fd5b506104cd610b76366004613186565b611ec8565b348015610b86575f80fd5b5061043d611f1f565b5f6001600160a01b038316610bfe5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f818152602081815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216636cdb3d1360e11b1480610c5657506001600160e01b031982166303a24d0760e21b145b80610c2057506301ffc9a760e01b6001600160e01b0319831614610c20565b6001600160a01b03919091165f908152600960209081526040808320938352929052205490565b60148054610ca9906131ea565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd5906131ea565b8015610d205780601f10610cf757610100808354040283529160200191610d20565b820191905f5260205f20905b815481529060010190602001808311610d0357829003601f168201915b505050505081565b5f818152601260209081526040808320838052909152812080546060929190610d50906131ea565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7c906131ea565b8015610dc75780601f10610d9e57610100808354040283529160200191610dc7565b820191905f5260205f20905b815481529060010190602001808311610daa57829003601f168201915b5050505050905080515f03610e675760138054610de3906131ea565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0f906131ea565b8015610e5a5780601f10610e3157610100808354040283529160200191610e5a565b820191905f5260205f20905b815481529060010190602001808311610e3d57829003601f168201915b5050505050915050919050565b5f83815260126020908152604080832083805290915290208054610de3906131ea565b50919050565b6004541580610ea55750610ea561060a611f2c565b610ec15760405162461bcd60e51b8152600401610bf59061321c565b610edb83838360405180602001604052805f815250611f3a565b505050565b6004541580610ef55750610ef561060a611f2c565b610f115760405162461bcd60e51b8152600401610bf59061321c565b6001600160a01b0381165f9081526003602052604090205460ff16610f785760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e657200006044820152606401610bf5565b6001600160a01b0381165f908152600360205260409020805460ff19169055610fa2600482612053565b50565b600a545f90610c20906001600160a01b031683610c75565b606060058054610fcc906131ea565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff8906131ea565b80156110435780601f1061101a57610100808354040283529160200191611043565b820191905f5260205f20905b81548152906001019060200180831161102657829003601f168201915b5050505050905090565b6004541580611062575061106261060a611f2c565b61107e5760405162461bcd60e51b8152600401610bf59061321c565b5f9182526007602052604090912055565b5f818152600e6020908152604080832054601190925282205482911115610c20575f83815260116020908152604080832054600e909252909120546110d49190613272565b9392505050565b6110e3611f2c565b6001600160a01b0316856001600160a01b03161480611109575061110985610b10611f2c565b6111255760405162461bcd60e51b8152600401610bf590613285565b6111328585858585612152565b5050505050565b600d546001600160a01b03166111815760405162461bcd60e51b815260206004820152600d60248201526c111c9bdc08191a5cd8589b1959609a1b6044820152606401610bf5565b8161118c84836118d7565b10156111d05760405162461bcd60e51b8152602060048201526013602482015272111c9bdc081b1a5b5a5d08195e18d959591959606a1b6044820152606401610bf5565b600d5482906111e8906001600160a01b031685610b8f565b10156112365760405162461bcd60e51b815260206004820152601b60248201527f52616e206f7574206f6620617661696c61626c6520746f6b656e7300000000006044820152606401610bf5565b611241838383612334565b600d5460408051808201909152600381526203078360ec1b6020820152610edb916001600160a01b031690839086908690612391565b600454158061128c575061128c61060a611f2c565b6112a85760405162461bcd60e51b8152600401610bf59061321c565b600a80546001600160a01b0319166001600160a01b038316179055610fa2815b60045415806112dd57506112dd61060a611f2c565b6112f95760405162461bcd60e51b8152600401610bf59061321c565b6001600160a01b0381165f908152600b602052604090205460ff16610fa2576001600160a01b03165f818152600b60205260408120805460ff19166001908117909155600c805491820181559091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319169091179055565b6004541580611392575061139261060a611f2c565b6113ae5760405162461bcd60e51b8152600401610bf59061321c565b60136113ba8282613318565b5050565b606081518351146114235760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610bf5565b5f835167ffffffffffffffff81111561143e5761143e612c5a565b604051908082528060200260200182016040528015611467578160200160208202803683370190505b5090505f5b84518110156114de576114b185828151811061148a5761148a6133d4565b60200260200101518583815181106114a4576114a46133d4565b6020026020010151610b8f565b8282815181106114c3576114c36133d4565b60209081029190910101526114d7816133e8565b905061146c565b509392505050565b60045415806114fb57506114fb61060a611f2c565b6115175760405162461bcd60e51b8152600401610bf59061321c565b5f918252600e602052604090912055565b600454158061153d575061153d61060a611f2c565b6115595760405162461bcd60e51b8152600401610bf59061321c565b5f5b6004548110156115c1575f60035f6004848154811061157c5761157c6133d4565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055806115b9816133e8565b91505061155b565b506115cd60045f612ab7565b565b60045415806115e457506115e461060a611f2c565b6116005760405162461bcd60e51b8152600401610bf59061321c565b5f918252600f602052604090912055565b6004541580611626575061162661060a611f2c565b6116425760405162461bcd60e51b8152600401610bf59061321c565b600a546113ba906001600160a01b03168383611dd0565b600454158061166e575061166e61060a611f2c565b61168a5760405162461bcd60e51b8152600401610bf59061321c565b6001600160a01b0381165f9081526003602052604090205460ff16610fa2576001600160a01b03165f818152600360205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319169091179055565b6004541580611723575061172361060a611f2c565b61173f5760405162461bcd60e51b8152600401610bf59061321c565b60166113ba8282613318565b60405162461bcd60e51b815260206004820152601260248201527113d4115490551253d397d11254d05093115160721b6044820152606401610bf5565b600454158061179d575061179d61060a611f2c565b6117b95760405162461bcd60e51b8152600401610bf59061321c565b5f8281526012602090815260408083208380529091529020610edb8282613318565b6060600c80548060200260200160405190810160405280929190818152602001828054801561104357602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611813575050505050905090565b600d548290611852906001600160a01b031685610b8f565b101561188b5760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b6044820152606401610bf5565b61124183836124c1565b60045415806118aa57506118aa61060a611f2c565b6118c65760405162461bcd60e51b8152600401610bf59061321c565b5f9182526008602052604090912055565b5f806118e28461108f565b5f858152600f6020908152604080832054601083528184206001600160a01b038916855290925282205492935090911015611952575f8581526010602090815260408083206001600160a01b0388168452825280832054888452600f9092529091205461194f9190613272565b90505b80821115611963579150610c209050565b509050610c20565b6004541580611980575061198061060a611f2c565b61199c5760405162461bcd60e51b8152600401610bf59061321c565b60056113ba8282613318565b60158054610ca9906131ea565b6060600480548060200260200160405190810160405280929190818152602001828054801561104357602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311611813575050505050905090565b6113ba611a1e611f2c565b83836125aa565b5f828152601260209081526040808320848452909152812080546060929190611a4d906131ea565b80601f0160208091040260200160405190810160405280929190818152602001828054611a79906131ea565b8015611ac45780601f10611a9b57610100808354040283529160200191611ac4565b820191905f5260205f20905b815481529060010190602001808311611aa757829003601f168201915b5050505050905080515f03611b645760138054611ae0906131ea565b80601f0160208091040260200160405190810160405280929190818152602001828054611b0c906131ea565b8015611b575780601f10611b2e57610100808354040283529160200191611b57565b820191905f5260205f20905b815481529060010190602001808311611b3a57829003601f168201915b5050505050915050610c20565b5f84815260126020908152604080832086845290915290208054611ae0906131ea565b6004541580611b9c5750611b9c61060a611f2c565b611bb85760405162461bcd60e51b8152600401610bf59061321c565b6001600160a01b0381165f908152600b602052604090205460ff16611c1f5760405162461bcd60e51b815260206004820181905260248201527f54617267657420636f6e7472616374206973206e6f7420617661696c61626c656044820152606401610bf5565b6001600160a01b0381165f908152600b60205260409020805460ff19169055610fa2600c82612053565b6004541580611c5e5750611c5e61060a611f2c565b611c7a5760405162461bcd60e51b8152600401610bf59061321c565b60156113ba8282613318565b6004541580611c9b5750611c9b61060a611f2c565b611cb75760405162461bcd60e51b8152600401610bf59061321c565b60146113ba8282613318565b6004541580611cd85750611cd861060a611f2c565b611cf45760405162461bcd60e51b8152600401610bf59061321c565b5f8381526012602090815260408083208380529091529020611d168282613318565b50505050565b6004541580611d315750611d3161060a611f2c565b611d4d5760405162461bcd60e51b8152600401610bf59061321c565b611d16848484846040518060400160405280600381526020016203078360ec1b815250612391565b600d548290611d8d906001600160a01b031685610b8f565b1015611dc65760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b6044820152606401610bf5565b6112418383612689565b6004541580611de55750611de561060a611f2c565b611e015760405162461bcd60e51b8152600401610bf59061321c565b6001600160a01b039092165f9081526009602090815260408083209383529290522055565b6004541580611e3b5750611e3b61060a611f2c565b611e575760405162461bcd60e51b8152600401610bf59061321c565b600680546001600160a01b0319166001600160a01b03831617905550565b6004541580611e8a5750611e8a61060a611f2c565b611ea65760405162461bcd60e51b8152600401610bf59061321c565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b611ed0611f2c565b6001600160a01b0316856001600160a01b03161480611ef65750611ef685610b10611f2c565b611f125760405162461bcd60e51b8152600401610bf590613285565b6111328585858585612391565b60168054610ca9906131ea565b5f611f356126a2565b905090565b6001600160a01b038416611f9a5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610bf5565b5f611fa3611f2c565b90505f611faf856126d6565b90505f611fbb856126d6565b90505f868152602081815260408083206001600160a01b038b16845290915281208054879290611fec908490613400565b909155505060408051878152602081018790526001600160a01b03808a16925f92918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461204a835f8989898961271f565b50505050505050565b5f5b8254811015610edb57816001600160a01b031683828154811061207a5761207a6133d4565b5f918252602090912001546001600160a01b03160361214057825483906120a390600190613272565b815481106120b3576120b36133d4565b905f5260205f20015f9054906101000a90046001600160a01b03168382815481106120e0576120e06133d4565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508280548061211b5761211b613413565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b8061214a816133e8565b915050612055565b81518351146121b45760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610bf5565b6001600160a01b0384166121da5760405162461bcd60e51b8152600401610bf590613427565b5f6121e3611f2c565b90505f5b84518110156122c6575f858281518110612203576122036133d4565b602002602001015190505f858381518110612220576122206133d4565b6020908102919091018101515f84815280835260408082206001600160a01b038e16835290935291909120549091508181101561226f5760405162461bcd60e51b8152600401610bf59061346c565b5f838152602081815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906122ab908490613400565b92505081905550505050806122bf906133e8565b90506121e7565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516123169291906134b6565b60405180910390a461232c818787878787612879565b505050505050565b5f8381526010602090815260408083206001600160a01b038516845290915281208054849290612365908490613400565b90915550505f8381526011602052604081208054849290612387908490613400565b9091555050505050565b6001600160a01b0384166123b75760405162461bcd60e51b8152600401610bf590613427565b5f6123c0611f2c565b90505f6123cc856126d6565b90505f6123d8856126d6565b90505f868152602081815260408083206001600160a01b038c1684529091529020548581101561241a5760405162461bcd60e51b8152600401610bf59061346c565b5f878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290612456908490613400565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46124b6848a8a8a8a8a61271f565b505050505050505050565b5f82815260086020526040812054116124ec5760405162461bcd60e51b8152600401610bf5906134e3565b600d546001600160a01b03166125145760405162461bcd60e51b8152600401610bf5906134e3565b5f8281526008602052604081205461252d90839061350a565b9050803410156125745760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f56414c554560701b6044820152606401610bf5565b600d546040516001600160a01b03909116903480156108fc02915f818181858888f19350505050158015611d16573d5f803e3d5ffd5b816001600160a01b0316836001600160a01b03160361261d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610bf5565b6001600160a01b038381165f81815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600a546113ba90839083906001600160a01b0316612933565b5f601436108015906126be57506006546001600160a01b031633145b156126d0575060131936013560601c90565b50335b90565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f8151811061270e5761270e6133d4565b602090810291909101015292915050565b6001600160a01b0384163b1561232c5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906127639089908990889088908890600401613521565b6020604051808303815f875af192505050801561279d575060408051601f3d908101601f1916820190925261279a91810190613565565b60015b612849576127a9613580565b806308c379a0036127e257506127bd613598565b806127c857506127e4565b8060405162461bcd60e51b8152600401610bf59190612bad565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610bf5565b6001600160e01b0319811663f23a6e6160e01b1461204a5760405162461bcd60e51b8152600401610bf590613621565b6001600160a01b0384163b1561232c5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906128bd9089908990889088908890600401613669565b6020604051808303815f875af19250505080156128f7575060408051601f3d908101601f191682019092526128f491810190613565565b60015b612903576127a9613580565b6001600160e01b0319811663bc197c8160e01b1461204a5760405162461bcd60e51b8152600401610bf590613621565b6001600160a01b0381165f908152600b602052604090205460ff1661299a5760405162461bcd60e51b815260206004820152601f60248201527f43555252454e43595f434f4e54524143545f4e4f545f535550504f52544544006044820152606401610bf5565b5f6129a58285610c75565b116129c25760405162461bcd60e51b8152600401610bf5906134e3565b600d546001600160a01b03166129ea5760405162461bcd60e51b8152600401610bf5906134e3565b6001600160a01b038116612a105760405162461bcd60e51b8152600401610bf5906134e3565b5f612a1b8285610c75565b612a25908461350a565b9050816001600160a01b0381166323b872dd612a3f611f2c565b600d5460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604481018590526064016020604051808303815f875af1158015612a93573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061232c91906136c6565b5080545f8255905f5260205f2090810190610fa291905b80821115612ae1575f8155600101612ace565b5090565b5f60208284031215612af5575f80fd5b5035919050565b6001600160a01b0381168114610fa2575f80fd5b5f8060408385031215612b21575f80fd5b8235612b2c81612afc565b946020939093013593505050565b6001600160e01b031981168114610fa2575f80fd5b5f60208284031215612b5f575f80fd5b81356110d481612b3a565b5f81518084525f5b81811015612b8e57602081850181015186830182015201612b72565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f6110d46020830184612b6a565b5f805f60608486031215612bd1575f80fd5b8335612bdc81612afc565b95602085013595506040909401359392505050565b5f60208284031215612c01575f80fd5b81356110d481612afc565b5f8060408385031215612c1d575f80fd5b823591506020830135612c2f81612afc565b809150509250929050565b5f8060408385031215612c4b575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f1916810167ffffffffffffffff81118282101715612c9457612c94612c5a565b6040525050565b5f67ffffffffffffffff821115612cb457612cb4612c5a565b5060051b60200190565b5f82601f830112612ccd575f80fd5b81356020612cda82612c9b5