UNPKG

@rep3/rep3-sdk

Version:

`rep3-sdk` is the ts package for projects to integrate rep3-protocol and services in their projects. This documentation will provide various ways and code snippets for the same. To know more about the protocol head over to our [docs](https://docs.rep3.gg/

1,069 lines 103 kB
{ "_format": "hh-sol-artifact-1", "contractName": "REP3Token", "sourceName": "contracts/REP3Token.sol", "abi": [ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "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": "approver", "type": "address" } ], "name": "ApproverAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "approver", "type": "address" } ], "name": "ApproverRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint8", "name": "level", "type": "uint8" }, { "indexed": true, "internalType": "uint8", "name": "category", "type": "uint8" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Claim", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "memberTokenId", "type": "uint256" }, { "indexed": true, "internalType": "uint8", "name": "_type", "type": "uint8" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Issue", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "tokenURI", "type": "string" }, { "indexed": true, "internalType": "uint8", "name": "level", "type": "uint8" }, { "indexed": true, "internalType": "uint8", "name": "category", "type": "uint8" } ], "name": "MembershipTokenChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "name", "type": "string" } ], "name": "NameChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Revoke", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint8", "name": "level", "type": "uint8" }, { "indexed": true, "internalType": "uint8", "name": "category", "type": "uint8" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Upgrade", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uriString", "type": "string" } ], "name": "_stringToArray", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "addApprover", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "memberTokenIds", "type": "uint256[]" }, { "internalType": "uint8[]", "name": "type_", "type": "uint8[]" }, { "internalType": "uint256[]", "name": "data", "type": "uint256[]" }, { "internalType": "string", "name": "tokenUri", "type": "string" } ], "name": "batchIssueBadge", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "approverToAdd", "type": "address[]" }, { "internalType": "address[]", "name": "approversToRemove", "type": "address[]" } ], "name": "changeApprover", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "index", "type": "uint32" }, { "internalType": "uint256[]", "name": "memberTokenIds", "type": "uint256[]" }, { "internalType": "uint8[]", "name": "type_", "type": "uint8[]" }, { "internalType": "string", "name": "tokenUri", "type": "string" }, { "internalType": "uint256[]", "name": "data", "type": "uint256[]" }, { "internalType": "uint32[]", "name": "nonces", "type": "uint32[]" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "internalType": "struct IREP3TokenTypes.BadgeVoucher", "name": "voucher", "type": "tuple" }, { "internalType": "uint256", "name": "memberTokenId", "type": "uint256" }, { "internalType": "uint256[]", "name": "approvedIndex", "type": "uint256[]" } ], "name": "claimBadge", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256[]", "name": "data", "type": "uint256[]" }, { "internalType": "uint8[]", "name": "end", "type": "uint8[]" }, { "internalType": "address[]", "name": "to", "type": "address[]" }, { "internalType": "string", "name": "tokenUris", "type": "string" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "internalType": "struct IREP3TokenTypes.NFTVoucher", "name": "voucher", "type": "tuple" }, { "internalType": "uint256", "name": "approvedIndex", "type": "uint256" } ], "name": "claimMembership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint8", "name": "slot", "type": "uint8" } ], "name": "dataSlot", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getType", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "memberTokenId", "type": "uint256" } ], "name": "getVoucherNonce", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "address[]", "name": "_approvers", "type": "address[]" }, { "internalType": "address", "name": "trustedForwarder_", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "isApprover", "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": "uint256", "name": "memberTokenId", "type": "uint256" }, { "internalType": "uint8", "name": "type_", "type": "uint8" }, { "internalType": "uint256", "name": "data", "type": "uint256" }, { "internalType": "string", "name": "tokenUri", "type": "string" } ], "name": "issueBadge", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "to", "type": "address[]" }, { "internalType": "uint256", "name": "data", "type": "uint256" }, { "internalType": "string", "name": "tokenUri", "type": "string" } ], "name": "issueMembership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "tokenUri", "type": "string" } ], "name": "membershipURIChange", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "migrate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "removeApprover", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "revokeMembership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "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": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "internalType": "struct IREP3TokenTypes.TransferVoucher", "name": "voucher", "type": "tuple" } ], "name": "soulTransfer", "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": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "data", "type": "uint256" }, { "internalType": "string", "name": "tokenUri", "type": "string" } ], "name": "updateMembership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b50614e60806100206000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80636cf4c88f11610130578063ab8b4a54116100b8578063d7a855a01161007c578063d7a855a0146104e3578063e985e9c5146104f6578063ebc1506a14610532578063f2fde38b14610545578063fc6ffbdd1461055857600080fd5b8063ab8b4a5414610489578063b646c1941461049c578063b88d4fde146104af578063b8adc06d146104bd578063c87b56dd146104d057600080fd5b80638da5cb5b116100ff5780638da5cb5b146104325780638fd3ab801461044357806395d89b411461044b578063a22cb46514610453578063a782feb21461046157600080fd5b80636cf4c88f146103f15780636d218e481461040457806370a0823114610417578063715018a61461042a57600080fd5b8063351011f2116101be578063499186831161018257806349918683146103765780634b6a719814610389578063572b6c05146103a9578063633ff941146103cb5780636352211e146103de57600080fd5b8063351011f2146103125780633644e515146103255780634036ab781461032e57806342842e0e146102ff578063481a48ec1461036357600080fd5b806311bf76b91161020557806311bf76b9146102b4578063164ab6b0146102c75780631749a4bb146102da57806318160ddd146102ed57806323b872dd146102ff57600080fd5b806301ffc9a71461023757806306fdde031461025f578063081812fc14610274578063095ea7b31461029f575b600080fd5b61024a61024536600461443b565b61056b565b60405190151581526020015b60405180910390f35b6102676105bd565b6040516102569190614939565b610287610282366004614628565b61064f565b6040516001600160a01b039091168152602001610256565b6102b26102ad36600461428b565b6106dc565b005b6102b26102c23660046145f1565b610729565b6102b26102d5366004614314565b61095e565b6102b26102e83660046142b4565b610bbc565b60a0545b604051908152602001610256565b6102b261030d36600461419e565b610c59565b6102b2610320366004614546565b610cbb565b6102f160995481565b61035161033c366004614628565b600090815260a7602052604090205460ff1690565b60405160ff9091168152602001610256565b6102b26103713660046144b2565b6110ec565b6102b26103843660046145b9565b6113d0565b61039c610397366004614473565b6119fb565b60405161025691906148d8565b61024a6103b7366004614152565b609f546001600160a01b0391821691161490565b6102b26103d936600461467a565b611b48565b6102876103ec366004614628565b611c66565b6102b26103ff366004614152565b611cdd565b61024a610412366004614152565b611d17565b6102f1610425366004614152565b611d22565b6102b2611da9565b6033546001600160a01b0316610287565b6102b2611dbd565b610267611e15565b6102b26102ad366004614251565b61047461046f366004614628565b611e24565b60405163ffffffff9091168152602001610256565b6102b2610497366004614628565b611e9b565b6102b26104aa366004614152565b611f04565b6102b261030d3660046141d9565b6103516104cb3660046146bd565b611f40565b6102676104de366004614628565b611f64565b6102b26104f136600461437d565b6120ee565b61024a61050436600461416c565b6001600160a01b03918216600090815260a46020908152604080832093909416825291909152205460ff1690565b6102b26105403660046146df565b6121ff565b6102b2610553366004614152565b612242565b6102b2610566366004614640565b6122b0565b60006301ffc9a760e01b6001600160e01b03198316148061059c57506380ac58cd60e01b6001600160e01b03198316145b806105b75750635b5e139f60e01b6001600160e01b03198316145b92915050565b6060609c80546105cc90614d68565b80601f01602080910402602001604051908101604052809291908181526020018280546105f890614d68565b80156106455780601f1061061a57610100808354040283529160200191610645565b820191906000526020600020905b81548152906001019060200180831161062857829003601f168201915b5050505050905090565b600061065a8261235a565b6106c05760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b50600090815260a360205260409020546001600160a01b031690565b60405162461bcd60e51b815260206004820152601760248201527f546f6b656e732063616e206e6f7420617070726f76656400000000000000000060448201526064016106b7565b505050565b8035600061073d6040840160208501614152565b905061074882612412565b50600082815260a76020526040902060020154610763612377565b600084815260a160205260409020546001600160a01b039081169116146107cc5760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420617574686f72697a656420746f20746f207472616e7366657200000060448201526064016106b7565b6001600160a01b038216600090815260aa6020908152604080832061ffff8516845290915290205460ff16156108755760405162461bcd60e51b815260206004820152604260248201527f5472616e73666572206e6f7420616c6c6f7765642e204164647265737320686f60448201527f6c647320616c726561647920686f6c6473206578616374206d656d6265727368606482015261069760f41b608482015260a4016106b7565b6000610880856124d0565b905061088b81611d17565b15156001146108ac5760405162461bcd60e51b81526004016106b790614a4e565b6108bd6108b7612377565b85612530565b6109235760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6044820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b60648201526084016106b7565b61094561092e612377565b848660405180602001604052806000815250612619565b610957610950612377565b848661264c565b5050505050565b610969610412612377565b15156001146109c65760405162461bcd60e51b815260206004820152602360248201527f4e6f7420617574686f72697a656420746f206973737565206d656d626572736860448201526269707360e81b60648201526084016106b7565b8160005b8451811015610a5e5760aa60008683815181106109f757634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252818101929092526040908101600090812061ffff8616825290925290205460ff1615610a4c5760405162461bcd60e51b81526004016106b79061494c565b80610a5681614da3565b9150506109ca565b5060005b8451811015610957576000610a7660a05490565b9050610aa9868381518110610a9b57634e487b7160e01b600052603260045260246000fd5b602002602001015182612724565b610ab3818561285f565b60408051606081018252600080825260208083018581528385018a815286845260a79092529382209251835460ff191660ff90911617835592516001808401919091559251600290920191909155875160aa9190899086908110610b2757634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252818101929092526040908101600090812061ffff88168252909252808220805460ff1916931515939093179092559051600885901c60ff908116928692859284169185917fe0cb488e127acbeb751038a091ccaffa49a672244b2c8af9ac97688ad5de12c19190a45050508080610bb490614da3565b915050610a62565b60005b8251811015610c0a57610bf8838281518110610beb57634e487b7160e01b600052603260045260246000fd5b60200260200101516128ea565b80610c0281614da3565b915050610bbf565b5060005b815181101561072457610c47828281518110610c3a57634e487b7160e01b600052603260045260246000fd5b6020026020010151612936565b80610c5181614da3565b915050610c0e565b60405162461bcd60e51b815260206004820152603160248201527f546f6b656e732063616e206e6f74207472616e736665727265642e205573652060448201527039b7bab62a3930b739b332b9233937b69760791b60648201526084016106b7565b6000610cf9610ccd6020870187614af4565b610cda6040890189614af4565b610ce760808b018b614af4565b610cf460608d018d614b3b565b612b2f565b90506000610d0686612d19565b9050610d1181611d17565b1515600114610d325760405162461bcd60e51b81526004016106b790614a4e565b610d3a612377565b600086815260a160205260409020546001600160a01b03908116911614610dc95760405162461bcd60e51b815260206004820152603860248201527f4e6f7420617574686f72697a656420746f20636c61696d2074686520766f756360448201527f68657220666f7220746865206d656d62657220746f6b656e000000000000000060648201526084016106b7565b6000610dd860a0880188614af4565b86866000818110610df957634e487b7160e01b600052603260045260246000fd5b90506020020135818110610e1d57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610e329190614731565b600087815260a9602052604090205490915063ffffffff808316911610610e6b5760405162461bcd60e51b81526004016106b7906149e4565b60005b84811015610f99576000868683818110610e9857634e487b7160e01b600052603260045260246000fd5b90506020020135905087898060200190610eb29190614af4565b83818110610ed057634e487b7160e01b600052603260045260246000fd5b9050602002013514610f1c5760405162461bcd60e51b81526020600482015260156024820152742bb937b733903130b233b29039b2b632b1ba34b7b760591b60448201526064016106b7565b63ffffffff8316610f3060a08b018b614af4565b83818110610f4e57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610f639190614731565b63ffffffff1614610f865760405162461bcd60e51b81526004016106b7906149e4565b5080610f9181614da3565b915050610e6e565b5060005b848110156110bd576000868683818110610fc757634e487b7160e01b600052603260045260246000fd5b9050602002013590506110aa898060200190610fe39190614af4565b8381811061100157634e487b7160e01b600052603260045260246000fd5b905060200201358a80604001906110189190614af4565b8481811061103657634e487b7160e01b600052603260045260246000fd5b905060200201602081019061104b919061474b565b61105860808d018d614af4565b8581811061107657634e487b7160e01b600052603260045260246000fd5b9050602002013588858151811061109d57634e487b7160e01b600052603260045260246000fd5b6020026020010151612d38565b50806110b581614da3565b915050610f9d565b50600095865260a96020526040909520805463ffffffff191663ffffffff909616959095179094555050505050565b600054610100900460ff161580801561110c5750600054600160ff909116105b806111265750303b158015611126575060005460ff166001145b6111895760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106b7565b6000805460ff1916600117905580156111ac576000805461ff0019166101001790555b84516111bf90609c906020880190613ef8565b5083516111d390609d906020870190613ef8565b50609f80546001600160a01b0319166001600160a01b0384161790556111f7612377565b609b80546001600160a01b0319166001600160a01b039290921691909117905560005b835181101561133257600084828151811061124557634e487b7160e01b600052603260045260246000fd5b6020026020010151905060006001600160a01b0316816001600160a01b03161415801561127b57506001600160a01b0381163014155b6112c75760405162461bcd60e51b815260206004820152601860248201527f417070726f766572206164647265737320696e76616c6964000000000000000060448201526064016106b7565b6112d081611d17565b156113165760405162461bcd60e51b8152602060048201526016602482015275105c1c1c9bdd995c88185b1c9958591e48185919195960521b60448201526064016106b7565b61131f816128ea565b508061132a81614da3565b91505061121a565b5061137c6040518060400160405280600a8152602001692922a819a9b4b3b732b960b11b81525060405180604001604052806005815260200164302e302e3160d81b815250612e11565b611384612e42565b8015610957576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b60006113dc8380614af4565b90501161141d5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b2103b37bab1b432b960891b60448201526064016106b7565b600061142f6103976060850185614b3b565b805190915061143e8480614af4565b90501461149e5760405162461bcd60e51b815260206004820152602860248201527f496e76616c696420766f75636865722e20546f6b656e2055726973206e6f74206044820152671c1c9bdd9a59195960c21b60648201526084016106b7565b60196114ad6040850185614af4565b905011156115235760405162461bcd60e51b815260206004820152603e60248201527f4d6f7265207468616e203235206164647265737365732063616e206e6f74206260448201527f6520617070726f76656420696e20612073696e676c6520766f7563686572000060648201526084016106b7565b61152b612377565b6001600160a01b03166115416040850185614af4565b8481811061155f57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906115749190614152565b6001600160a01b0316146115ca5760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420616c6c6f77656420746f206d696e74207468697320746f6b656e000060448201526064016106b7565b60006115d96040850185614af4565b9050116116345760405162461bcd60e51b8152602060048201526024808201527f566f7563686572206973206e6f742076616c696420666f7220616e79206164646044820152637265737360e01b60648201526084016106b7565b600061163f84612e71565b905061164a81611d17565b151560011461166b5760405162461bcd60e51b81526004016106b790614a4e565b600061167a6040860186614af4565b9150600090508061168e6020880188614af4565b905011156116dd576116a36020870187614af4565b60008181106116c257634e487b7160e01b600052603260045260246000fd5b90506020020160208101906116d7919061474b565b60ff1691505b6000805b6116ee6040890189614af4565b905081101561176d576116ff612377565b6001600160a01b031661171560408a018a614af4565b8381811061173357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906117489190614152565b6001600160a01b0316141561175b578091505b8061176581614da3565b9150506116e1565b505b80831115801561179657506117876020880188614af4565b9050611794836001614baf565b105b156117f2576117a6826001614baf565b91506117b56020880188614af4565b838181106117d357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906117e8919061474b565b60ff16925061176f565b80831161180a576118066020880188614af4565b9250505b60006118416118198980614af4565b8581811061183757634e487b7160e01b600052603260045260246000fd5b9050602002013590565b905060aa600061184f612377565b6001600160a01b031681526020808201929092526040908101600090812061ffff8516825290925290205460ff161561189a5760405162461bcd60e51b81526004016106b79061494c565b60006118a560a05490565b90506118b86118b2612377565b82612724565b6118e9818886815181106118dc57634e487b7160e01b600052603260045260246000fd5b602002602001015161285f565b60408051606081018252600081526020810183905290810161190b8b80614af4565b8781811061192957634e487b7160e01b600052603260045260246000fd5b60209081029290920135909252600084815260a7825260408082208551815460ff191660ff9091161781559285015160018085019190915594015160029092019190915560aa9150611979612377565b6001600160a01b031681526020808201929092526040908101600090812061ffff87168252909252808220805460ff1916931515939093179092559051600884901c60ff908116928592859284169185917fe0cb488e127acbeb751038a091ccaffa49a672244b2c8af9ac97688ad5de12c19190a45050505050505050505050565b60606000611a3e84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e9092505050565b60408051808201825260018152600b60fa1b602080830191825283518085018552600080825290820181905284518086019095529251845283015291925090611a878383612ebd565b6001600160401b03811115611aac57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611adf57816020015b6060815260200190600190039081611aca5790505b50905060005b8151811015611b3e57611b00611afb8585612f5e565b612f7d565b828281518110611b2057634e487b7160e01b600052603260045260246000fd5b60200260200101819052508080611b3690614da3565b915050611ae5565b5095945050505050565b611b5183612412565b50611b5d610412612377565b1515600114611b7e5760405162461bcd60e51b81526004016106b790614a4e565b600083815260a760205260409020600201548261ffff80831690821614611c0257600085815260a16020908152604080832080546001600160a01b03908116855260aa80855283862061ffff808a168852908652848720805460ff199081169091559354909216865284528285209086168552909252909120805490911660011790555b600085815260a760205260409020600201849055611c20858461285f565b60405160ff600883901c811691839188919083169084907fb3a6b328438cd540fafac0afee28de55dd906854884296e0fc483dc16feaa91990600090a450505050505050565b600081815260a160205260408120546001600160a01b0316806105b75760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016106b7565b611ce5612377565b611cee81612ff3565b611d0a5760405162461bcd60e51b81526004016106b790614a28565b611d1382612936565b5050565b60006105b782612ff3565b60006001600160a01b038216611d8d5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016106b7565b506001600160a01b0316600090815260a2602052604090205490565b611db1613011565b611dbb600061308a565b565b609b546001600160a01b0316611dd1612377565b6001600160a01b031614611dbb5760405162461bcd60e51b815260206004820152600b60248201526a2737ba1036b0b730b3b2b960a91b60448201526064016106b7565b6060609d80546105cc90614d68565b6000611e31610412612377565b1515600114611e7b5760405162461bcd60e51b815260206004820152601660248201527529b2b73232b91034b9903737ba1030b8383937bb32b960511b60448201526064016106b7565b600082815260a960205260409020546105b79063ffffffff166001614bc7565b611ea481612412565b50611eb0610412612377565b1515600114611f015760405162461bcd60e51b815260206004820152601860248201527f4e6f7420617574686f72697a656420746f207265766f6b65000000000000000060448201526064016106b7565b50565b611f0c612377565b611f1581612ff3565b611f315760405162461bcd60e51b81526004016106b790614a28565b611d13826128ea565b50505050565b600082815260a76020526040812060020154611f5c81846130dc565b949350505050565b6060611f6f8261235a565b611fd55760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b60648201526084016106b7565b600082815260a5602052604081208054611fee90614d68565b80601f016020809104026020016040519081016040528092919081815260200182805461201a90614d68565b80156120675780601f1061203c57610100808354040283529160200191612067565b820191906000526020600020905b81548152906001019060200180831161204a57829003601f168201915b5050505050905060006120a0604080518082019091526013815272687474703a2f2f617277656176652e6e65742f60681b602082015290565b90508051600014156120b3575092915050565b8151156120e55780826040516020016120cd92919061486c565b60405160208183030381529060405292505050919050565b611f5c846130f6565b6120f6612377565b6120ff81612ff3565b61211b5760405162461bcd60e51b81526004016106b790614a28565b600061212d8a8a8a8a8a8a8a8a612b2f565b905060005b898110156121f2576121e08b8b8381811061215d57634e487b7160e01b600052603260045260246000fd5b905060200201358a8a8481811061218457634e487b7160e01b600052603260045260246000fd5b9050602002016020810190612199919061474b565b8989858181106121b957634e487b7160e01b600052603260045260246000fd5b9050602002013585858151811061109d57634e487b7160e01b600052603260045260246000fd5b806121ea81614da3565b915050612132565b5050505050505050505050565b612207612377565b61221081612ff3565b61222c5760405162461bcd60e51b81526004016106b790614a28565b61223685856131e8565b61095785858585612d38565b6001600160a01b0381166122a75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b7565b611f018161308a565b6122b8612377565b6122c181612ff3565b6122dd5760405162461bcd60e51b81526004016106b790614a28565b6122e683612412565b506122f1838361285f565b600083815260a7602052604090819020600201549051819060ff600883901c811691839182169083907f47cb245b5efb53bbbdfbbb996010f51eb335f2e51dbd21fc39319e09598072d990612349908b908b90614adb565b60405180910390a350505050505050565b600090815260a160205260409020546001600160a01b0316151590565b609f546000906001600160a01b031633141561239a575060131936013560601c90565b503390565b905090565b600081815260a36020526040902080546001600160a01b0319166001600160a01b03841690811790915581906123d982611c66565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061241d8261235a565b6124695760405162461bcd60e51b815260206004820152601d60248201527f4d656d62657220546f6b656e20496420646f65736e277420657869737400000060448201526064016106b7565b600082815260a7602052604090205460ff16156124c85760405162461bcd60e51b815260206004820181905260248201527f546f6b656e204964206973206e6f74204d656d6265727368697020546f6b656e60448201526064016106b7565b506001919050565b6000806124dc8361325e565b9050612529816124ef6040860186614b3b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132d592505050565b9392505050565b600061253b8261235a565b61259c5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106b7565b60006125a783611c66565b9050806001600160a01b0316846001600160a01b031614806125ee57506001600160a01b03808216600090815260a4602090815260408083209388168352929052205460ff165b80611f5c5750836001600160a01b03166126078461064f565b6001600160a01b031614949350505050565b61262484848461298d565b612630848484846132f9565b611f3a5760405162461bcd60e51b81526004016106b790614992565b600081815260a760209081526040808320600201546001600160a01b03878116855260aa80855283862061ffff8416808852908652848720805460ff1990811690915592891687529085528386209086529093529083208054909216600117909155905b600083815260a86020526040902054811015610957576127126126d1612377565b600085815260a86020526040902080548791908590811061270257634e487b7160e01b600052603260045260246000fd5b906000526020600020015461298d565b8061271c81614da3565b9150506126b0565b6001600160a01b03821661277a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106b7565b6127838161235a565b156127d05760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106b7565b6001600160a01b038216600090815260a2602052604081208054600192906127f9908490614baf565b9091555050600081815260a1602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4611d136000838361340d565b6128688261235a565b6128cb5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016106b7565b600082815260a560209081526040909120825161072492840190613ef8565b6001600160a01b0381166000818152609a6020526040808220805460ff19166001179055517f835bddf1ceee4956e4329af9edf018523c1191238187a597453f6020bcadb0429190a250565b61293f81612ff3565b15611f01576001600160a01b0381166000818152609a6020526040808220805460ff19169055517fc6e35658c76ecdde40a54f31a91fb7c8615e9893cc0885584b27bb3433270d469190a250565b826001600160a01b03166129a082611c66565b6001600160a01b031614612a045760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016106b7565b6001600160a01b038216612a665760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016106b7565b612a716000826123a4565b6001600160a01b038316600090815260a260205260408120805460019290612a9a908490614d25565b90915550506001600160a01b038216600090815260a260205260408120805460019290612ac8908490614baf565b9091555050600081815260a1602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a461072483838361340d565b6060876019811115612b8d5760405162461bcd60e51b815260206004820152602160248201527f43616e206e6f74206973737565206d6f7265207468616e2032352062616467656044820152607360f81b60648201526084016106b7565b868114612bdc5760405162461bcd60e51b815260206004820152601a60248201527f5265717565737420696e76616c69643a2074797065206c69737400000000000060448201526064016106b7565b848114612c2b5760405162461bcd60e51b815260206004820152601a60248201527f5265717565737420696e76616c69643a2064617461206c69737400000000000060448201526064016106b7565b6000612c3785856119fb565b905081815114612c895760405162461bcd60e51b815260206004820152601960248201527f5265717565737420696e76616c69643a20757269206c6973740000000000000060448201526064016106b7565b60005b82811015612d0a57612cf88c8c83818110612cb757634e487b7160e01b600052603260045260246000fd5b905060200201358b8b84818110612cde57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190612cf3919061474b565b6131e8565b80612d0281614da3565b915050612c8c565b509a9950505050505050505050565b600080612d2583613423565b9050612529816124ef60c0860186614b3b565b6000612d4360a05490565b600086815260a160205260409020549091506001600160a01b0316612d688183612724565b612d72828461285f565b6040805160608101825260ff87811680835260208084018b81528486018a8152600089815260a784528781209651875460ff19169616959095178655905160018087019190915590516002909501949094558a835260a8815284832080549485018155835282209092018590559151849289917f529a8cc8b4c7ff3dedd358633ca27e089181dd4db18312295b8a9056546fe78c9190a4505050505050565b600054610100900460ff16612e385760405162461bcd60e51b81526004016106b790614a90565b611d138282613594565b600054610100900460ff16612e695760405162461bcd60e51b81526004016106b790614a90565b611dbb6135d5565b600080612e7d8361360c565b9050612529816124ef6080860186614b3b565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6000808260000151612ee18560000151866020015186600001518760200151613723565b612eeb9190614baf565b90505b83516020850151612eff9190614baf565b8111612f575781612f0f81614da3565b9250508260000151612f46856020015183612f2a9190614d25565b8651612f369190614d25565b8386600001518760200151613723565b612f509190614baf565b9050612eee565b5092915050565b6040805180820190915260008082526020820152612f57838383613844565b6060600082600001516001600160401b03811115612fab57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612fd5576020820181803683370190505b5090506000602082019050612f5781856020015186600001516138f0565b6001600160a01b03166000908152609a602052604090205460ff1690565b613019612377565b6001600160a01b03166130346033546001600160a01b031690565b6001600160a01b031614611dbb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b7565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006130e9826008614d04565b60ff169290921c92915050565b60606131018261235a565b6131655760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016106b7565b6000613197604080518082019091526013815272687474703a2f2f617277656176652e6e65742f60681b602082015290565b905060008151116131b75760405180602001604052806000815250612529565b806131c18461396a565b6040516020016131d292919061486c565b6040516020818303038152906040529392505050565b6131f182613a83565b5060ff8116611d135760405162461bcd60e51b815260206004820152603360248201527f4d656d62657220546f6b656e2063616e206e6f74206265206973737565642e20604482015272557365207369676e656420766f75636865727360681b60648201526084016106b7565b60006105b77ff274e127a35fb420f9eeb462337f7858c1a359e68a436531fe38e63887749daa83356132966040860160208701614152565b6040805160208101949094528301919091526001600160a01b031660608201526080015b60405160208183030381529060405280519060200120613af2565b60008060006132e48585613b40565b915091506132f181613b86565b509392505050565b60006001600160a01b0384163b1561340257836001600160a01b031663150b7a02613322612377565b8786866040518563ffffffff1660e01b8152600401613344949392919061489b565b602060405180830381600087803b15801561335e57600080fd5b505af192505050801561338e575060408051601f3d908101601f1916820190925261338b91810190614457565b60015b6133e8573d8080156133bc576040519150601f19603f3d011682016040523d82523d6000602084013e6133c1565b606091505b5080516133e05760405162461bcd60e51b81526004016106b790614992565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611f5c565b506001949350505050565b60a05461341b906001614baf565b60a055505050565b60006105b77f48208bc107d358b2689436e74fc7f87a70321f4ebf97f0beccecd3f8259683366134566020850185614731565b6134636020860186614af4565b6040516020016134749291906147d1565b6040516020818303038152906040528051906020012085806040019061349a9190614af4565b6040516020016134ab92919061482d565b60408051601f1981840301815291905280516020909101206134d06060880188614b3b565b6040516134de92919061485c565b6040519