@credenza-web3/contracts
Version:
Credenza Contracts
707 lines (706 loc) • 47.6 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "SellableMetadataMembershipContract",
"sourceName": "contracts/membership/SellableMetadataMembershipContract.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "MembershipAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "MembershipRemoved",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "addAvailableCurrencyTokenContract",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "customerAddress",
"type": "address"
},
{
"internalType": "string",
"name": "metadata",
"type": "string"
}
],
"name": "addMembership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "customerAddress",
"type": "address"
},
{
"internalType": "string",
"name": "metadata",
"type": "string"
},
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
}
],
"name": "addMembershipWithExpiration",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "addOwner",
"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": "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": [
{
"internalType": "address",
"name": "customerAddress",
"type": "address"
}
],
"name": "confirmMembership",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"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": "getDefaultExpiration",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDescription",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "customerAddress",
"type": "address"
}
],
"name": "getMembershipExpiration",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "customerAddress",
"type": "address"
}
],
"name": "getMembershipMetadata",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"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": "",
"type": "string"
}
],
"stateMutability": "pure",
"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": "contractAddress",
"type": "address"
}
],
"name": "removeAvailableCurrencyTokenContract",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "customerAddress",
"type": "address"
}
],
"name": "removeMembership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "removeOwner",
"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": "uint256",
"name": "time",
"type": "uint256"
}
],
"name": "setDefaultExpiration",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "description",
"type": "string"
}
],
"name": "setDescription",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "customerAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
}
],
"name": "setMembershipExpiration",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "customerAddress",
"type": "address"
},
{
"internalType": "string",
"name": "metadata",
"type": "string"
}
],
"name": "setMembershipMetadata",
"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": "address",
"name": "_forwarder",
"type": "address"
}
],
"name": "setTrustedForwarder",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x608060405234801562000010575f80fd5b50620000256200001f6200002b565b62000060565b62000177565b5f601436108015906200004857506003546001600160a01b031633145b156200005b575060131936013560601c90565b503390565b600154158062000096575062000096620000796200002b565b6001600160a01b03165f9081526020819052604090205460ff1690565b620000f25760405162461bcd60e51b815260206004820152602260248201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604482015261371760f11b606482015260840160405180910390fd5b6001600160a01b0381165f9081526020819052604090205460ff1662000174576001600160a01b0381165f818152602081905260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b03191690911790555b50565b611f1f80620001855f395ff3fe608060405260043610610233575f3560e01c8063724e5c1711610129578063bb7b4036116100a8578063da7422281161006d578063da742228146106d3578063e1461f12146106f2578063ec6be06e1461071d578063f17fa44e1461073c578063fb989cea1461075b575f80fd5b8063bb7b40361461063c578063ce1b815f1461065b578063d1eff89514610678578063d36223f114610695578063d93f5bed146106b4575f80fd5b8063a0e67e2b116100ee578063a0e67e2b14610588578063adfadad31461059c578063b33a599f146105c7578063b3d68181146105e6578063b68de97414610605575f80fd5b8063724e5c17146104f75780638003e27f1461051657806380dc439e1461053757806388d0f86a1461054a57806390c3f38f14610569575f80fd5b80633a932dba116101b557806353c324771161017a57806353c3247714610458578063572b6c051461046c578063578680be1461049a5780635b64bed0146104b95780637065cb48146104d8575f80fd5b80633a932dba146103c85780633de4fdc8146103e7578063502ccb091461040657806351ae4cd3146104255780635260f5e614610444575f80fd5b8063177ed0f3116101fb578063177ed0f3146103105780631a0925411461032f5780631abe7cb3146103435780632f54bf6e1461036257806338a8f569146103a9575f80fd5b80630118173c14610237578063031f5c871461027e5780630d8e6e2c1461029d57806316bef596146102be578063173825d9146102ef575b5f80fd5b348015610242575f80fd5b5061026b61025136600461192b565b6001600160a01b03165f908152600c602052604090205490565b6040519081526020015b60405180910390f35b348015610289575f80fd5b5061026b61029836600461194d565b61077a565b3480156102a8575f80fd5b506102b16107a4565b6040516102759190611977565b3480156102c9575f80fd5b506007546001600160a01b03165b6040516001600160a01b039091168152602001610275565b3480156102fa575f80fd5b5061030e61030936600461192b565b6107c4565b005b34801561031b575f80fd5b5061026b61032a3660046119c2565b610892565b34801561033a575f80fd5b506102b16108aa565b34801561034e575f80fd5b5061030e61035d3660046119d9565b61093a565b34801561036d575f80fd5b5061039961037c36600461192b565b6001600160a01b03165f9081526020819052604090205460ff1690565b6040519015158152602001610275565b3480156103b4575f80fd5b5061030e6103c3366004611a96565b61097c565b3480156103d3575f80fd5b5061030e6103e236600461192b565b6109d6565b3480156103f2575f80fd5b5061030e61040136600461192b565b610a27565b348015610411575f80fd5b5061030e610420366004611aeb565b610adc565b348015610430575f80fd5b5061030e61043f3660046119c2565b610b1b565b34801561044f575f80fd5b5061030e610b51565b348015610463575f80fd5b50600e5461026b565b348015610477575f80fd5b5061039961048636600461192b565b6003546001600160a01b0391821691161490565b3480156104a5575f80fd5b5061030e6104b43660046119d9565b610bf7565b3480156104c4575f80fd5b506102b16104d336600461192b565b610c3f565b3480156104e3575f80fd5b5061030e6104f236600461192b565b610d64565b348015610502575f80fd5b5061030e610511366004611b38565b610e16565b348015610521575f80fd5b5061052a610e53565b6040516102759190611b7f565b61030e610545366004611bcb565b610eb2565b348015610555575f80fd5b5061030e6105643660046119d9565b610f29565b348015610574575f80fd5b5061030e610583366004611c01565b610f6b565b348015610593575f80fd5b5061052a610fa8565b3480156105a7575f80fd5b5061026b6105b63660046119c2565b5f9081526005602052604090205490565b3480156105d2575f80fd5b5061030e6105e136600461192b565b611006565b3480156105f1575f80fd5b5061030e61060036600461192b565b6110c8565b348015610610575f80fd5b5061039961061f36600461192b565b6001600160a01b03165f9081526008602052604090205460ff1690565b348015610647575f80fd5b5061030e61065636600461194d565b61114e565b348015610666575f80fd5b506003546001600160a01b03166102d7565b348015610683575f80fd5b50600a546001600160a01b03166102d7565b3480156106a0575f80fd5b5061030e6106af366004611bcb565b611202565b3480156106bf575f80fd5b5061030e6106ce366004611c3b565b61125c565b3480156106de575f80fd5b5061030e6106ed36600461192b565b6112b2565b3480156106fd575f80fd5b5061026b61070c3660046119c2565b5f9081526004602052604090205490565b348015610728575f80fd5b5061030e61073736600461192b565b611301565b348015610747575f80fd5b5061039961075636600461192b565b611354565b348015610766575f80fd5b5061030e610775366004611aeb565b6113b2565b6001600160a01b0382165f9081526006602090815260408083208484529091529020545b92915050565b60606040518060600160405280602a8152602001611ec0602a9139905090565b60015415806107d957506107d961037c611478565b6107fe5760405162461bcd60e51b81526004016107f590611c6d565b60405180910390fd5b6001600160a01b0381165f9081526020819052604090205460ff166108655760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e6572000060448201526064016107f5565b6001600160a01b0381165f908152602081905260409020805460ff1916905561088f6001826114ab565b50565b6007545f9061079e906001600160a01b03168361077a565b6060600280546108b990611caf565b80601f01602080910402602001604051908101604052809291908181526020018280546108e590611caf565b80156109305780601f1061090757610100808354040283529160200191610930565b820191905f5260205f20905b81548152906001019060200180831161091357829003601f168201915b5050505050905090565b600154158061094f575061094f61037c611478565b61096b5760405162461bcd60e51b81526004016107f590611c6d565b5f9182526004602052604090912055565b6001541580610991575061099161037c611478565b6109ad5760405162461bcd60e51b81526004016107f590611c6d565b6109b783836115aa565b6001600160a01b039092165f908152600c602052604090209190915550565b60015415806109eb57506109eb61037c611478565b610a075760405162461bcd60e51b81526004016107f590611c6d565b600780546001600160a01b0319166001600160a01b03831617905561088f815b6001541580610a3c5750610a3c61037c611478565b610a585760405162461bcd60e51b81526004016107f590611c6d565b6001600160a01b0381165f9081526008602052604090205460ff1661088f576001600160a01b03165f818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6001541580610af15750610af161037c611478565b610b0d5760405162461bcd60e51b81526004016107f590611c6d565b610b1782826115aa565b5050565b6001541580610b305750610b3061037c611478565b610b4c5760405162461bcd60e51b81526004016107f590611c6d565b600e55565b6001541580610b665750610b6661037c611478565b610b825760405162461bcd60e51b81526004016107f590611c6d565b5f5b600154811015610be9575f805f60018481548110610ba457610ba4611ce7565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905580610be181611d0f565b915050610b84565b50610bf560015f6118e9565b565b6001541580610c0c5750610c0c61037c611478565b610c285760405162461bcd60e51b81526004016107f590611c6d565b600754610b17906001600160a01b0316838361125c565b6040516378bfd22760e11b81526001600160a01b0382166004820152606090309063f17fa44e90602401602060405180830381865afa158015610c84573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca89190611d27565b610cbf57505060408051602081019091525f815290565b6001600160a01b0382165f908152600d602052604090208054610ce190611caf565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0d90611caf565b8015610d585780601f10610d2f57610100808354040283529160200191610d58565b820191905f5260205f20905b815481529060010190602001808311610d3b57829003601f168201915b50505050509050919050565b6001541580610d795750610d7961037c611478565b610d955760405162461bcd60e51b81526004016107f590611c6d565b6001600160a01b0381165f9081526020819052604090205460ff1661088f576001600160a01b03165f818152602081905260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319169091179055565b60405162461bcd60e51b815260206004820152601260248201527113d4115490551253d397d11254d05093115160721b60448201526064016107f5565b6060600980548060200260200160405190810160405280929190818152602001828054801561093057602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610e8b575050505050905090565b610ebb81611354565b15610f015760405162461bcd60e51b81526020600482015260166024820152750414c52454144595f4841535f4d454d424552534849560541b60448201526064016107f5565b610f0c5f6001611663565b610f248160405180602001604052805f8152506115aa565b505050565b6001541580610f3e5750610f3e61037c611478565b610f5a5760405162461bcd60e51b81526004016107f590611c6d565b5f9182526005602052604090912055565b6001541580610f805750610f8061037c611478565b610f9c5760405162461bcd60e51b81526004016107f590611c6d565b6002610b178282611d8b565b6060600180548060200260200160405190810160405280929190818152602001828054801561093057602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610e8b575050505050905090565b600154158061101b575061101b61037c611478565b6110375760405162461bcd60e51b81526004016107f590611c6d565b6001600160a01b0381165f9081526008602052604090205460ff1661109e5760405162461bcd60e51b815260206004820181905260248201527f54617267657420636f6e7472616374206973206e6f7420617661696c61626c6560448201526064016107f5565b6001600160a01b0381165f908152600860205260409020805460ff1916905561088f6009826114ab565b60015415806110dd57506110dd61037c611478565b6110f95760405162461bcd60e51b81526004016107f590611c6d565b6001600160a01b0381165f818152600b60209081526040808320805460ff19169055600c909152808220829055517fb06142a803b635c046318ced2e53320bc58e5d67cd8a097a74abebb81ea4a23f9190a250565b6001541580611163575061116361037c611478565b61117f5760405162461bcd60e51b81526004016107f590611c6d565b6001600160a01b0382165f908152600b602052604090205460ff166111e7576001600160a01b0382165f818152600b6020526040808220805460ff19166001179055517f893e16c93d8f47d85366f981752a56e333030c5450f51db6c8136ec34e28c7c09190a25b6001600160a01b039091165f908152600c6020526040902055565b61120b81611354565b156112515760405162461bcd60e51b81526020600482015260166024820152750414c52454144595f4841535f4d454d424552534849560541b60448201526064016107f5565b610f0c5f6001611752565b6001541580611271575061127161037c611478565b61128d5760405162461bcd60e51b81526004016107f590611c6d565b6001600160a01b039092165f9081526006602090815260408083209383529290522055565b60015415806112c757506112c761037c611478565b6112e35760405162461bcd60e51b81526004016107f590611c6d565b600380546001600160a01b0319166001600160a01b03831617905550565b6001541580611316575061131661037c611478565b6113325760405162461bcd60e51b81526004016107f590611c6d565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381165f908152600b602052604081205460ff16801561079e57506001600160a01b0382165f908152600c6020526040902054158061079e5750506001600160a01b03165f908152600c6020526040902054421090565b60015415806113c757506113c761037c611478565b6113e35760405162461bcd60e51b81526004016107f590611c6d565b6040516378bfd22760e11b81526001600160a01b0383166004820152309063f17fa44e90602401602060405180830381865afa158015611425573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114499190611d27565b61145757610b178282610adc565b6001600160a01b0382165f908152600d60205260409020610f248282611d8b565b5f6014361080159061149457506003546001600160a01b031633145b156114a6575060131936013560601c90565b503390565b5f5b8254811015610f2457816001600160a01b03168382815481106114d2576114d2611ce7565b5f918252602090912001546001600160a01b03160361159857825483906114fb90600190611e47565b8154811061150b5761150b611ce7565b905f5260205f20015f9054906101000a90046001600160a01b031683828154811061153857611538611ce7565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508280548061157357611573611e5a565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b806115a281611d0f565b9150506114ad565b6001600160a01b0382165f908152600b60209081526040808320805460ff19166001179055600d90915290206115e08282611d8b565b50600e541561161357600e546115f69042611e6e565b6001600160a01b0383165f908152600c602052604090205561162c565b6001600160a01b0382165f908152600c60205260408120555b6040516001600160a01b038316907f893e16c93d8f47d85366f981752a56e333030c5450f51db6c8136ec34e28c7c0905f90a25050565b5f828152600560205260408120541161168e5760405162461bcd60e51b81526004016107f590611e81565b600a546001600160a01b03166116b65760405162461bcd60e51b81526004016107f590611e81565b5f828152600560205260408120546116cf908390611ea8565b9050803410156117165760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f56414c554560701b60448201526064016107f5565b600a546040516001600160a01b03909116903480156108fc02915f818181858888f1935050505015801561174c573d5f803e3d5ffd5b50505050565b6007546001600160a01b03165f81815260086020526040902054610b1791849184919060ff166117c45760405162461bcd60e51b815260206004820152601f60248201527f43555252454e43595f434f4e54524143545f4e4f545f535550504f525445440060448201526064016107f5565b5f6117cf828561077a565b116117ec5760405162461bcd60e51b81526004016107f590611e81565b600a546001600160a01b03166118145760405162461bcd60e51b81526004016107f590611e81565b6001600160a01b03811661183a5760405162461bcd60e51b81526004016107f590611e81565b5f611845828561077a565b61184f9084611ea8565b9050816001600160a01b0381166323b872dd611869611478565b600a5460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604481018590526064016020604051808303815f875af11580156118bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118e19190611d27565b505050505050565b5080545f8255905f5260205f209081019061088f91905b80821115611913575f8155600101611900565b5090565b6001600160a01b038116811461088f575f80fd5b5f6020828403121561193b575f80fd5b813561194681611917565b9392505050565b5f806040838503121561195e575f80fd5b823561196981611917565b946020939093013593505050565b5f6020808352835180828501525f5b818110156119a257858101830151858201604001528201611986565b505f604082860101526040601f19601f8301168501019250505092915050565b5f602082840312156119d2575f80fd5b5035919050565b5f80604083850312156119ea575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611a1c575f80fd5b813567ffffffffffffffff80821115611a3757611a376119f9565b604051601f8301601f19908116603f01168101908282118183101715611a5f57611a5f6119f9565b81604052838152866020858801011115611a77575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f60608486031215611aa8575f80fd5b8335611ab381611917565b9250602084013567ffffffffffffffff811115611ace575f80fd5b611ada86828701611a0d565b925050604084013590509250925092565b5f8060408385031215611afc575f80fd5b8235611b0781611917565b9150602083013567ffffffffffffffff811115611b22575f80fd5b611b2e85828601611a0d565b9150509250929050565b5f805f8060808587031215611b4b575f80fd5b84359350602085013592506040850135611b6481611917565b91506060850135611b7481611917565b939692955090935050565b602080825282518282018190525f9190848201906040850190845b81811015611bbf5783516001600160a01b031683529284019291840191600101611b9a565b50909695505050505050565b5f805f60608486031215611bdd575f80fd5b83359250602084013591506040840135611bf681611917565b809150509250925092565b5f60208284031215611c11575f80fd5b813567ffffffffffffffff811115611c27575f80fd5b611c3384828501611a0d565b949350505050565b5f805f60608486031215611c4d575f80fd5b8335611c5881611917565b95602085013595506040909401359392505050565b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b600181811c90821680611cc357607f821691505b602082108103611ce157634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611d2057611d20611cfb565b5060010190565b5f60208284031215611d37575f80fd5b81518015158114611946575f80fd5b601f821115610f24575f81815260208120601f850160051c81016020861015611d6c5750805b601f850160051c820191505b818110156118e157828155600101611d78565b815167ffffffffffffffff811115611da557611da56119f9565b611db981611db38454611caf565b84611d46565b602080601f831160018114611dec575f8415611dd55750858301515b5f19600386901b1c1916600185901b1785556118e1565b5f85815260208120601f198616915b82811015611e1a57888601518255948401946001909101908401611dfb565b5085821015611e3757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561079e5761079e611cfb565b634e487b7160e01b5f52603160045260245ffd5b8082018082111561079e5761079e611cfb565b6020808252600d908201526c14d1531317d11254d050931151609a1b604082015260600190565b808202811582820484141761079e5761079e611cfb56fe53656c6c61626c654d657461646174614d656d62657273686970436f6e7472616374207620312e312e30a2646970667358221220b11c0e52ac64d2d1471fc90c2659158ce0e615a5dda02802f2305838f1309bba64736f6c63430008140033",
"deployedBytecode": "0x608060405260043610610233575f3560e01c8063724e5c1711610129578063bb7b4036116100a8578063da7422281161006d578063da742228146106d3578063e1461f12146106f2578063ec6be06e1461071d578063f17fa44e1461073c578063fb989cea1461075b575f80fd5b8063bb7b40361461063c578063ce1b815f1461065b578063d1eff89514610678578063d36223f114610695578063d93f5bed146106b4575f80fd5b8063a0e67e2b116100ee578063a0e67e2b14610588578063adfadad31461059c578063b33a599f146105c7578063b3d68181146105e6578063b68de97414610605575f80fd5b8063724e5c17146104f75780638003e27f1461051657806380dc439e1461053757806388d0f86a1461054a57806390c3f38f14610569575f80fd5b80633a932dba116101b557806353c324771161017a57806353c3247714610458578063572b6c051461046c578063578680be1461049a5780635b64bed0146104b95780637065cb48146104d8575f80fd5b80633a932dba146103c85780633de4fdc8146103e7578063502ccb091461040657806351ae4cd3146104255780635260f5e614610444575f80fd5b8063177ed0f3116101fb578063177ed0f3146103105780631a0925411461032f5780631abe7cb3146103435780632f54bf6e1461036257806338a8f569146103a9575f80fd5b80630118173c14610237578063031f5c871461027e5780630d8e6e2c1461029d57806316bef596146102be578063173825d9146102ef575b5f80fd5b348015610242575f80fd5b5061026b61025136600461192b565b6001600160a01b03165f908152600c602052604090205490565b6040519081526020015b60405180910390f35b348015610289575f80fd5b5061026b61029836600461194d565b61077a565b3480156102a8575f80fd5b506102b16107a4565b6040516102759190611977565b3480156102c9575f80fd5b506007546001600160a01b03165b6040516001600160a01b039091168152602001610275565b3480156102fa575f80fd5b5061030e61030936600461192b565b6107c4565b005b34801561031b575f80fd5b5061026b61032a3660046119c2565b610892565b34801561033a575f80fd5b506102b16108aa565b34801561034e575f80fd5b5061030e61035d3660046119d9565b61093a565b34801561036d575f80fd5b5061039961037c36600461192b565b6001600160a01b03165f9081526020819052604090205460ff1690565b6040519015158152602001610275565b3480156103b4575f80fd5b5061030e6103c3366004611a96565b61097c565b3480156103d3575f80fd5b5061030e6103e236600461192b565b6109d6565b3480156103f2575f80fd5b5061030e61040136600461192b565b610a27565b348015610411575f80fd5b5061030e610420366004611aeb565b610adc565b348015610430575f80fd5b5061030e61043f3660046119c2565b610b1b565b34801561044f575f80fd5b5061030e610b51565b348015610463575f80fd5b50600e5461026b565b348015610477575f80fd5b5061039961048636600461192b565b6003546001600160a01b0391821691161490565b3480156104a5575f80fd5b5061030e6104b43660046119d9565b610bf7565b3480156104c4575f80fd5b506102b16104d336600461192b565b610c3f565b3480156104e3575f80fd5b5061030e6104f236600461192b565b610d64565b348015610502575f80fd5b5061030e610511366004611b38565b610e16565b348015610521575f80fd5b5061052a610e53565b6040516102759190611b7f565b61030e610545366004611bcb565b610eb2565b348015610555575f80fd5b5061030e6105643660046119d9565b610f29565b348015610574575f80fd5b5061030e610583366004611c01565b610f6b565b348015610593575f80fd5b5061052a610fa8565b3480156105a7575f80fd5b5061026b6105b63660046119c2565b5f9081526005602052604090205490565b3480156105d2575f80fd5b5061030e6105e136600461192b565b611006565b3480156105f1575f80fd5b5061030e61060036600461192b565b6110c8565b348015610610575f80fd5b5061039961061f36600461192b565b6001600160a01b03165f9081526008602052604090205460ff1690565b348015610647575f80fd5b5061030e61065636600461194d565b61114e565b348015610666575f80fd5b506003546001600160a01b03166102d7565b348015610683575f80fd5b50600a546001600160a01b03166102d7565b3480156106a0575f80fd5b5061030e6106af366004611bcb565b611202565b3480156106bf575f80fd5b5061030e6106ce366004611c3b565b61125c565b3480156106de575f80fd5b5061030e6106ed36600461192b565b6112b2565b3480156106fd575f80fd5b5061026b61070c3660046119c2565b5f9081526004602052604090205490565b348015610728575f80fd5b5061030e61073736600461192b565b611301565b348015610747575f80fd5b5061039961075636600461192b565b611354565b348015610766575f80fd5b5061030e610775366004611aeb565b6113b2565b6001600160a01b0382165f9081526006602090815260408083208484529091529020545b92915050565b60606040518060600160405280602a8152602001611ec0602a9139905090565b60015415806107d957506107d961037c611478565b6107fe5760405162461bcd60e51b81526004016107f590611c6d565b60405180910390fd5b6001600160a01b0381165f9081526020819052604090205460ff166108655760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e6572000060448201526064016107f5565b6001600160a01b0381165f908152602081905260409020805460ff1916905561088f6001826114ab565b50565b6007545f9061079e906001600160a01b03168361077a565b6060600280546108b990611caf565b80601f01602080910402602001604051908101604052809291908181526020018280546108e590611caf565b80156109305780601f1061090757610100808354040283529160200191610930565b820191905f5260205f20905b81548152906001019060200180831161091357829003601f168201915b5050505050905090565b600154158061094f575061094f61037c611478565b61096b5760405162461bcd60e51b81526004016107f590611c6d565b5f9182526004602052604090912055565b6001541580610991575061099161037c611478565b6109ad5760405162461bcd60e51b81526004016107f590611c6d565b6109b783836115aa565b6001600160a01b039092165f908152600c602052604090209190915550565b60015415806109eb57506109eb61037c611478565b610a075760405162461bcd60e51b81526004016107f590611c6d565b600780546001600160a01b0319166001600160a01b03831617905561088f815b6001541580610a3c5750610a3c61037c611478565b610a585760405162461bcd60e51b81526004016107f590611c6d565b6001600160a01b0381165f9081526008602052604090205460ff1661088f576001600160a01b03165f818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6001541580610af15750610af161037c611478565b610b0d5760405162461bcd60e51b81526004016107f590611c6d565b610b1782826115aa565b5050565b6001541580610b305750610b3061037c611478565b610b4c5760405162461bcd60e51b81526004016107f590611c6d565b600e55565b6001541580610b665750610b6661037c611478565b610b825760405162461bcd60e51b81526004016107f590611c6d565b5f5b600154811015610be9575f805f60018481548110610ba457610ba4611ce7565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905580610be181611d0f565b915050610b84565b50610bf560015f6118e9565b565b6001541580610c0c5750610c0c61037c611478565b610c285760405162461bcd60e51b81526004016107f590611c6d565b600754610b17906001600160a01b0316838361125c565b6040516378bfd22760e11b81526001600160a01b0382166004820152606090309063f17fa44e90602401602060405180830381865afa158015610c84573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca89190611d27565b610cbf57505060408051602081019091525f815290565b6001600160a01b0382165f908152600d602052604090208054610ce190611caf565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0d90611caf565b8015610d585780601f10610d2f57610100808354040283529160200191610d58565b820191905f5260205f20905b815481529060010190602001808311610d3b57829003601f168201915b50505050509050919050565b6001541580610d795750610d7961037c611478565b610d955760405162461bcd60e51b81526004016107f590611c6d565b6001600160a01b0381165f9081526020819052604090205460ff1661088f576001600160a01b03165f818152602081905260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319169091179055565b60405162461bcd60e51b815260206004820152601260248201527113d4115490551253d397d11254d05093115160721b60448201526064016107f5565b6060600980548060200260200160405190810160405280929190818152602001828054801561093057602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610e8b575050505050905090565b610ebb81611354565b15610f015760405162461bcd60e51b81526020600482015260166024820152750414c52454144595f4841535f4d454d424552534849560541b60448201526064016107f5565b610f0c5f6001611663565b610f248160405180602001604052805f8152506115aa565b505050565b6001541580610f3e5750610f3e61037c611478565b610f5a5760405162461bcd60e51b81526004016107f590611c6d565b5f9182526005602052604090912055565b6001541580610f805750610f8061037c611478565b610f9c5760405162461bcd60e51b81526004016107f590611c6d565b6002610b178282611d8b565b6060600180548060200260200160405190810160405280929190818152602001828054801561093057602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610e8b575050505050905090565b600154158061101b575061101b61037c611478565b6110375760405162461bcd60e51b81526004016107f590611c6d565b6001600160a01b0381165f9081526008602052604090205460ff1661109e5760405162461bcd60e51b815260206004820181905260248201527f54617267657420636f6e7472616374206973206e6f7420617661696c61626c6560448201526064016107f5565b6001600160a01b0381165f908152600860205260409020805460ff1916905561088f6009826114ab565b60015415806110dd57506110dd61037c611478565b6110f95760405162461bcd60e51b81526004016107f590611c6d565b6001600160a01b0381165f818152600b60209081526040808320805460ff19169055600c909152808220829055517fb06142a803b635c046318ced2e53320bc58e5d67cd8a097a74abebb81ea4a23f9190a250565b6001541580611163575061116361037c611478565b61117f5760405162461bcd60e51b81526004016107f590611c6d565b6001600160a01b0382165f908152600b602052604090205460ff166111e7576001600160a01b0382165f818152600b6020526040808220805460ff19166001179055517f893e16c93d8f47d85366f981752a56e333030c5450f51db6c8136ec34e28c7c09190a25b6001600160a01b039091165f908152600c6020526040902055565b61120b81611354565b156112515760405162461bcd60e51b81526020600482015260166024820152750414c52454144595f4841535f4d454d424552534849560541b60448201526064016107f5565b610f0c5f6001611752565b6001541580611271575061127161037c611478565b61128d5760405162461bcd60e51b81526004016107f590611c6d565b6001600160a01b039092165f9081526006602090815260408083209383529290522055565b60015415806112c757506112c761037c611478565b6112e35760405162461bcd60e51b81526004016107f590611c6d565b600380546001600160a01b0319166001600160a01b03831617905550565b6001541580611316575061131661037c611478565b6113325760405162461bcd60e51b81526004016107f590611c6d565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381165f908152600b602052604081205460ff16801561079e57506001600160a01b0382165f908152600c6020526040902054158061079e5750506001600160a01b03165f908152600c6020526040902054421090565b60015415806113c757506113c761037c611478565b6113e35760405162461bcd60e51b81526004016107f590611c6d565b6040516378bfd22760e11b81526001600160a01b0383166004820152309063f17fa44e90602401602060405180830381865afa158015611425573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114499190611d27565b61145757610b178282610adc565b6001600160a01b0382165f908152600d60205260409020610f248282611d8b565b5f6014361080159061149457506003546001600160a01b031633145b156114a6575060131936013560601c90565b503390565b5f5b8254811015610f2457816001600160a01b03168382815481106114d2576114d2611ce7565b5f918252602090912001546001600160a01b03160361159857825483906114fb90600190611e47565b8154811061150b5761150b611ce7565b905f5260205f20015f9054906101000a90046001600160a01b031683828154811061153857611538611ce7565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508280548061157357611573611e5a565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b806115a281611d0f565b9150506114ad565b6001600160a01b0382165f908152600b60209081526040808320805460ff19166001179055600d90915290206115e08282611d8b565b50600e541561161357600e546115f69042611e6e565b6001600160a01b0383165f908152600c602052604090205561162c565b6001600160a01b0382165f908152600c60205260408120555b6040516001600160a01b038316907f893e16c93d8f47d85366f981752a56e333030c5450f51db6c8136ec34e28c7c0905f90a25050565b5f828152600560205260408120541161168e5760405162461bcd60e51b81526004016107f590611e81565b600a546001600160a01b03166116b65760405162461bcd60e51b81526004016107f590611e81565b5f828152600560205260408120546116cf908390611ea8565b9050803410156117165760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f56414c554560701b60448201526064016107f5565b600a546040516001600160a01b03909116903480156108fc02915f818181858888f1935050505015801561174c573d5f803e3d5ffd5b50505050565b6007546001600160a01b03165f81815260086020526040902054610b1791849184919060ff166117c45760405162461bcd60e51b815260206004820152601f60248201527f43555252454e43595f434f4e54524143545f4e4f545f535550504f525445440060448201526064016107f5565b5f6117cf828561077a565b116117ec5760405162461bcd60e51b81526004016107f590611e81565b600a546001600160a01b03166118145760405162461bcd60e51b81526004016107f590611e81565b6001600160a01b03811661183a5760405162461bcd60e51b81526004016107f590611e81565b5f611845828561077a565b61184f9084611ea8565b9050816001600160a01b0381166323b872dd611869611478565b600a5460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604481018590526064016020604051808303815f875af11580156118bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118e19190611d27565b505050505050565b5080545f8255905f5260205f209081019061088f91905b80821115611913575f8155600101611900565b5090565b6001600160a01b038116811461088f575f80fd5b5f6020828403121561193b575f80fd5b813561194681611917565b9392505050565b5f806040838503121561195e575f80fd5b823561196981611917565b946020939093013593505050565b5f6020808352835180828501525f5b818110156119a257858101830151858201604001528201611986565b505f604082860101526040601f19601f8301168501019250505092915050565b5f602082840312156119d2575f80fd5b5035919050565b5f80604083850312156119ea575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611a1c575f80fd5b813567ffffffffffffffff80821115611a3757611a376119f9565b604051601f8301601f19908116603f01168101908282118183101715611a5f57611a5f6119f9565b81604052838152866020858801011115611a77575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f60608486031215611aa8575f80fd5b8335611ab381611917565b9250602084013567ffffffffffffffff811115611ace575f80fd5b611ada86828701611a0d565b925050604084013590509250925092565b5f8060408385031215611afc575f80fd5b8235611b0781611917565b9150602083013567ffffffffffffffff811115611b22575f80fd5b611b2e85828601611a0d565b9150509250929050565b5f805f8060808587031215611b4b575f80fd5b84359350602085013592506040850135611b6481611917565b91506060850135611b7481611917565b939692955090935050565b602080825282518282018190525f9190848201906040850190845b81811015611bbf5783516001600160a01b031683529284019291840191600101611b9a565b50909695505050505050565b5f805f60608486031215611bdd575f80fd5b83359250602084013591506040840135611bf681611917565b809150509250925092565b5f60208284031215611c11575f80fd5b813567ffffffffffffffff811115611c27575f80fd5b611c3384828501611a0d565b949350505050565b5f805f60608486031215611c4d575f80fd5b8335611c5881611917565b95602085013595506040909401359392505050565b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b600181811c90821680611cc357607f821691505b602082108103611ce157634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611d2057611d20611cfb565b5060010190565b5f60208284031215611d37575f80fd5b81518015158114611946575f80fd5b601f821115610f24575f81815260208120601f850160051c81016020861015611d6c5750805b601f850160051c820191505b818110156118e157828155600101611d78565b815167ffffffffffffffff811115611da557611da56119f9565b611db981611db38454611caf565b84611d46565b602080601f831160018114611dec575f8415611dd55750858301515b5f19600386901b1c1916600185901b1785556118e1565b5f85815260208120601f198616915b82811015611e1a57888601518255948401946001909101908401611dfb565b5085821015611e3757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561079e5761079e611cfb565b634e487b7160e01b5f52603160045260245ffd5b8082018082111561079e5761079e611cfb565b6020808252600d908201526c14d1531317d11254d050931151609a1b604082015260600190565b808202811582820484141761079e5761079e611cfb56fe53656c6c61626c654d657461646174614d656d62657273686970436f6e7472616374207620312e312e30a2646970667358221220b11c0e52ac64d2d1471fc90c2659158ce0e615a5dda02802f2305838f1309bba64736f6c63430008140033",
"linkReferences": {},
"deployedLinkReferences": {}
}