UNPKG

@paulstinchcombe/kami721c-sdk

Version:

SDK for interacting with KAMI721C NFT contracts

1,653 lines 131 kB
{ "_format": "hh-sol-artifact-1", "contractName": "KAMI721CUpgradeable", "sourceName": "contracts/KAMI721CUpgradeable.sol", "abi": [ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "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": "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": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "indexed": false, "internalType": "struct KAMI721CUpgradeable.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "MintRoyaltiesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "platformAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "PlatformCommissionPaid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint96", "name": "newPercentage", "type": "uint96" }, { "indexed": false, "internalType": "address", "name": "newPlatformAddress", "type": "address" } ], "name": "PlatformCommissionUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "renter", "type": "address" } ], "name": "RentalEnded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "renter", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "newEndTime", "type": "uint256" } ], "name": "RentalExtended", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint96", "name": "newPercentage", "type": "uint96" } ], "name": "RoyaltyPercentageUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "indexed": false, "internalType": "struct KAMI721CUpgradeable.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "TokenMintRoyaltiesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "renter", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "rentalPrice", "type": "uint256" } ], "name": "TokenRented", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "TokenSold", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "indexed": false, "internalType": "struct KAMI721CUpgradeable.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "TokenTransferRoyaltiesUpdated", "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": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "indexed": false, "internalType": "struct KAMI721CUpgradeable.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "TransferRoyaltiesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TransferRoyaltyDistributed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "OWNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PLATFORM_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "RENTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPGRADER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "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": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "endRental", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "additionalDuration", "type": "uint256" }, { "internalType": "uint256", "name": "additionalPayment", "type": "uint256" } ], "name": "extendRental", "outputs": [], "stateMutability": "nonpayable", "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": "getMintRoyaltyReceivers", "outputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721CUpgradeable.RoyaltyData[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getRentalInfo", "outputs": [ { "internalType": "address", "name": "renter", "type": "address" }, { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "uint256", "name": "rentalPrice", "type": "uint256" }, { "internalType": "bool", "name": "active", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getTransferRoyaltyReceivers", "outputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721CUpgradeable.RoyaltyData[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "hasActiveRentals", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "usdcAddress_", "type": "address" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "string", "name": "baseTokenURI_", "type": "string" }, { "internalType": "uint256", "name": "initialMintPrice_", "type": "uint256" }, { "internalType": "address", "name": "platformAddress_", "type": "address" }, { "internalType": "uint96", "name": "platformCommissionPercentage_", "type": "uint96" } ], "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "isRented", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "platformAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "platformCommissionPercentage", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" }, { "internalType": "uint256", "name": "rentalPrice", "type": "uint256" } ], "name": "rentToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "royaltyPercentage", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "stateMutability": "view", "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": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "sellToken", "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": "string", "name": "baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMintPrice", "type": "uint256" } ], "name": "setMintPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721CUpgradeable.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "setMintRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint96", "name": "newPlatformCommissionPercentage", "type": "uint96" }, { "internalType": "address", "name": "newPlatformAddress", "type": "address" } ], "name": "setPlatformCommission", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint96", "name": "newRoyaltyPercentage", "type": "uint96" } ], "name": "setRoyaltyPercentage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721CUpgradeable.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "setTokenMintRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721CUpgradeable.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "setTokenTransferRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721CUpgradeable.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "setTransferRoyalties", "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "usdcToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60a08060405234620000e157306080526000549060ff8260081c166200008f575060ff8082160362000053575b604051615c429081620000e782396080518181816120af015281816121bc0152612b360152f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a1386200002c565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714613a2c5750806306fdde0314613990578063081812fc14613972578063095ea7b3146137f85780630a0a3515146136d45780630daf4c97146136a757806311eac8551461367d5780631249c58b1461338d57806318160ddd1461336f5780631c2098dc14612fcf57806323b872dd14612fab578063248a9ca314612f7c57806327dc3fbd14612eef5780632a55205a14612eb35780632f2ff15d14612e125780632f745c5914612d6057806336568abe14612cce5780633659cfe614612b115780633e11741f146127f75780633f4ba83a1461274157806342842e0e1461272a57806342966c68146125dc578063463dace0146125bd578063492ae5a3146124015780634f1ef2861461217e5780634f6ccce71461216057806352d1902d1461209c57806355f804b314611f1b5780635c975abb14611ef75780635e27a77514611ecc578063602481b614611c125780636352211e14611be25780636817c76c14611bc357806370824c5c14611b8857806370a0823114611b5d5780638456cb5914611aa85780638a71bb2d14611a8057806391d1485414611a3357806392303e0614611a0b57806395d89b411461194e57806397491d6f1461180a5780639f6d68b014611731578063a217fddf14611715578063a22cb4651461163a578063aa15d40f14611605578063b88d4fde14611591578063b97c9f7714611556578063c87b56dd14611291578063c8a9aabc14611000578063d547741f14610fbf578063dbe55e5614610f9d578063de6fb96c14610797578063e58378bb1461076e578063e5f2e0cc1461050b578063e985e9c5146104b5578063f249fd1614610320578063f4a0a528146102dd5763f72c0d8b1461029d57600080fd5b346102d85760003660031901126102d85760206040517f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e38152f35b600080fd5b346102d85760203660031901126102d857336000908152600080516020615b8d83398151915260205260409020546103179060ff16613e07565b6004356101c455005b346102d85760403660031901126102d8577f410d007abb80c65964518a8b4f3007c4b354d36d7cfb908d3e3fa6411506e274604061035c613d79565b610364613b4b565b90600080516020615b4d8339815191526000526020606581528360002033600052815261039760ff856000205416613e07565b6001600160a01b038316916001600160601b03906103b684151561475f565b16926103c66107d08511156147ab565b6101c690815460601c916001600160601b03198260601b16861790558382036103f7575b50508351928352820152a1005b610443917f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e9081600052606585528760002081600052855260ff88600020541661044a575b50506148a6565b85806103ea565b81600052606585528760002081600052855260ff8860002054161561043c578160005260658552876000208160005285528760002060ff19815416905533917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b600080a4878061043c565b346102d85760403660031901126102d8576104ce613b35565b6104d6613b4b565b9060018060a01b03809116600052609c60205260406000209116600052602052602060ff604060002054166040519015158152f35b346102d85761051936613b91565b336000908152600080516020615b8d8339815191526020908152604090912054909392906105499060ff16613e07565b60008381526099602052604090205461056c906001600160a01b03161515613e4c565b826000526101cb8085526105836040600020613eb8565b6000906000905b8482106106fc575050612710906105ac826001600160601b03809316146145d0565b831580156105ed575b857fcacd6190ee2ad101cd34b99d8fbaf3cdcda816ef83aaa4759f111ba1c416e62086866105e86040519283928361405b565b0390a2005b6106e6576105fa83613f00565b916106148261060a898701613f53565b1691821115614f2c565b6001600160a01b039283169283156106a1579061069893929160fc7fcacd6190ee2ad101cd34b99d8fbaf3cdcda816ef83aaa4759f111ba1c416e62098996040519561065f87613c8a565b865280860193845260008b815291905260409020935191516001600160a01b039190921616911660a01b6001600160a01b031916179055565b839285806105b5565b60405162461bcd60e51b815260048101899052601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b634e487b7160e01b600052603260045260246000fd5b90916001906107469061072b6001600160a01b0361072361071e888b8b613ef0565b613f00565b161515613f14565b6107408961073a878a8a613ef0565b01613f53565b90613f67565b92866000528288526107676040600020610761838989613ef0565b90613fb9565b019061058a565b346102d85760003660031901126102d8576020604051600080516020615b4d8339815191528152f35b346102d85760e03660031901126102d8576107b0613b35565b6024356001600160401b0381116102d8576107cf903690600401613d32565b6044356001600160401b0381116102d8576107ee903690600401613d32565b6064356001600160401b0381116102d85761080d903690600401613d32565b9260a4356001600160a01b03811690036102d85760c435916001600160601b03831683036102d8576000549360ff8560081c161594858096610f90575b8015610f79575b15610f1d5760ff19811660011760005585610f0b575b506001600160a01b03831615610ecf5761088d60a4356001600160a01b0316151561475f565b6108a46107d06001600160601b03861611156147ab565b6108be60ff60005460081c166108b981614ffe565b614ffe565b8051906001600160401b038211610ccb5781906108dc609754613d8f565b601f8111610e5b575b50602090601f8311600114610de357600092610dd8575b50508160011b916000199060031b1c1916176097555b8051906001600160401b038211610ccb578190610930609854613d8f565b601f8111610d64575b50602090601f8311600114610cec57600092610ce1575b50508160011b916000199060031b1c1916176098555b6109af60ff60005460081c1661097b81614ffe565b61098481614ffe565b61098d81614ffe565b61099681614ffe565b61099f81614ffe565b61012d805460ff19169055614ffe565b6101c780546001600160a01b0319166001600160a01b0390921691909117905582516001600160401b038111610ccb576101c5906109ed8254613d8f565b601f8111610c79575b50602094601f8211600114610c0957948192939495600092610bfe575b50508160011b916000199060031b1c19161790555b6084356101c4556001600160601b03801991168160a43560601b16176101c6556103e86101cc918254161790556000805260658060205260406000203360005260205260ff6040600020541615610bbf575b600080516020615b4d833981519152806000528160205260406000203360005260205260ff6040600020541615610b7e575b50610ab860a4356148a6565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e390816000528060205260406000203360005260205260ff6040600020541615610b3d575b5050610b0557005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b816000526020526040600020336000526020526040600020600160ff1982541617905533903390600080516020615b2d833981519152600080a48180610afd565b80600052816020526040600020336000526020526040600020600160ff1982541617905533903390600080516020615b2d833981519152600080a482610aac565b60008052806020526040600020336000526020526040600020600160ff1982541617905533336000600080516020615b2d8339815191528180a4610a7a565b015190508580610a13565b601f1982169583600052600080516020615bcd8339815191529160005b888110610c6157508360019596979810610c48575b505050811b019055610a28565b015160001960f88460031b161c19169055858080610c3b565b91926020600181928685015181550194019201610c26565b82600052600080516020615bcd833981519152601f830160051c81019160208410610cc1575b601f0160051c01905b818110610cb557506109f6565b60008155600101610ca8565b9091508190610c9f565b634e487b7160e01b600052604160045260246000fd5b015190508680610950565b92506098600052600080516020615bed833981519152906000935b601f1984168510610d49576001945083601f19811610610d30575b505050811b01609855610966565b015160001960f88460031b161c19169055868080610d22565b81810151835560209485019460019093019290910190610d07565b9091506098600052601f830160051c600080516020615bed8339815191520160208410610dc3575b908392915b601f820160051c600080516020615bed833981519152018110610db45750610939565b60008155849350600101610d91565b50600080516020615bed833981519152610d8c565b0151905087806108fc565b92506097600052600080516020615b6d833981519152906000935b601f1984168510610e40576001945083601f19811610610e27575b505050811b01609755610912565b015160001960f88460031b161c19169055878080610e19565b81810151835560209485019460019093019290910190610dfe565b9091506097600052601f830160051c600080516020615b6d8339815191520160208410610eba575b908392915b601f820160051c600080516020615b6d833981519152018110610eab57506108e5565b60008155849350600101610e88565b50600080516020615b6d833981519152610e83565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c69642055534443206164647265737360601b6044820152606490fd5b61ffff19166101011760005586610867565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156108515750600160ff821614610851565b50600160ff82161061084a565b346102d85760003660031901126102d85760206101c65460601c604051908152f35b346102d85760403660031901126102d857610ffe600435610fde613b4b565b90806000526065602052610ff9600160406000200154614d42565b614efb565b005b346102d85761100e36613bc4565b600083815260996020526040902054919291611034906001600160a01b03161515613e4c565b816000526101cd9060209382855261105660ff6004604060002001541661471d565b80156112395781156111e25761106b84614683565b600085815284875260409020546001600160a01b0391908216330361119d57906110df916101c6916127106110aa6001600160601b0385541688613e8f565b04926110b6848861422b565b93896101c7926110cd8a8686541630903390614823565b8c83611153575b50505050541661486a565b836000528285526110f96002604060002001918254614259565b9055826000528184526111156003604060002001918254614259565b90558160005282527f43ed7a287a535d13f2389230befff1329b7724a3890189bb8727976119e6c6c3600260406000200154926040519384523393a3005b7f2a0edbc96cbdf959b1243e79c51b9bb83b7867279441dc220825d561c2fbb2c6916111888588885416835460601c9061486a565b5460601c93604051908152a38a89818c6110d4565b60405162461bcd60e51b815260048101889052601d60248201527f4f6e6c792072656e7465722063616e20657874656e642072656e74616c0000006044820152606490fd5b60405162461bcd60e51b815260048101869052602960248201527f4164646974696f6e616c207061796d656e74206d75737420626520677265617460448201526806572207468616e20360bc1b6064820152608490fd5b60405162461bcd60e51b815260048101869052602a60248201527f4164646974696f6e616c206475726174696f6e206d75737420626520677265616044820152690746572207468616e20360b41b6064820152608490fd5b346102d8576020806003193601126102d8576004356000818152609960205260409020546112c9906001600160a01b03161515614637565b8160405160006101c5805491836112df84613d8f565b9182825286820193600195886001821691826000146115385750506001146114ec575b5061130f92500384613cf6565b8251156114d157600094807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000081818110156114c3575b50506d04ee2d6d415b85acef8100000000808310156114b5575b50662386f26fc10000808310156114a6575b506305f5e10080831015611497575b5061271080831015611488575b506064821015611478575b600a8092101561146e575b9260018701938160216113c96113b388613d17565b976113c1604051998a613cf6565b808952613d17565b878a019a90601f1901368c37870101905b611438575b505050509361141e9392916114126114039660405197889551809288880190613aed565b84019151809386840190613aed565b01038084520182613cf6565b905b611434604051928284938452830190613b10565b0390f35b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304918215611469579190826113da565b6113df565b956001019561139e565b9590606460029104910195611393565b60049197920491019588611388565b6008919792049101958861137b565b6010919792049101958861136c565b86919792049101958861135a565b604098500491508880611340565b50505050506040516114e281613ca5565b6000815290611420565b9150506000528385600080516020615bcd833981519152856000915b85831061151f57505061130f935082010189611302565b80919294505483858a0101520191018690858793611508565b60ff1916875261130f95151560051b85010192508b91506113029050565b346102d85760003660031901126102d85760206040517f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d8152f35b346102d85760803660031901126102d8576115aa613b35565b6115b2613b4b565b90606435906044356001600160401b0383116102d857610ffe936115dd611600943690600401613d32565b926115f06115eb8433614945565b614266565b6115fb838383614a0d565b6158be565b614fde565b346102d85760203660031901126102d8576004356000526101cd602052602060ff600460406000200154166040519015158152f35b346102d85760403660031901126102d857611653613b35565b60243590811515908183036102d8576001600160a01b0316913383146116d0576116a29033600052609c60205260406000208460005260205260406000209060ff801983541691151516179055565b6040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606490fd5b346102d85760003660031901126102d857602060405160008152f35b346102d85760203660031901126102d8576001600160601b03611752613d79565b336000908152600080516020615b8d833981519152602052604090205461177b9060ff16613e07565b16610bb881116117c55760207f8df4d6c1a5c8e6c4d7a71d760d42122503a5244aeab98f2ff8e3244be07a44e3916101cc816001600160601b0319825416179055604051908152a1005b60405162461bcd60e51b815260206004820152601b60248201527f526f79616c74792070657263656e7461676520746f6f206869676800000000006044820152606490fd5b346102d85760203660031901126102d857600435600081815260996020526040902054611841906001600160a01b03161515613e4c565b806000526101cd8060205261186060ff6004604060002001541661471d565b61186982614683565b6001600160a01b0392908316913383148015611936575b156118e557816000526020526004604060002093845416930160ff1981541690556118aa836140c8565b156118d7575b7fdfd6ab3fc2a0e563c3389917592f1a850824730b5f05f16be9363c4adfc268da600080a4005b6118e083614e4e565b6118b0565b60405162461bcd60e51b815260206004820152602360248201527f4f6e6c79206f776e6572206f722072656e7465722063616e20656e642072656e6044820152621d185b60ea1b6064820152608490fd5b50816000528060205283604060002054163314611880565b346102d85760003660031901126102d85760405160985460008261197183613d8f565b91828252602093600190856001821691826000146119eb5750506001146119a0575b5061142092500383613cf6565b8491506098600052600080516020615bed833981519152906000915b8583106119d3575050611420935082010185611993565b805483890185015287945086939092019181016119bc565b60ff19168582015261142095151560051b85010192508791506119939050565b346102d85760003660031901126102d85760206001600160601b036101c65416604051908152f35b346102d85760403660031901126102d857611a4c613b4b565b600435600052606560205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346102d85760003660031901126102d85760206001600160601b036101cc5416604051908152f35b346102d85760003660031901126102d857336000908152600080516020615b8d8339815191526020526040902054611ae29060ff16613e07565b61012d805460ff8116611b255760019060ff19161790557f62e78cea0