@hypernetlabs/objects
Version:
Objects and types shared by the Hypernet Protocol
1,130 lines • 107 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
_format: "hh-sol-artifact-1",
contractName: "NonFungibleRegistryEnumerableUpgradeable",
sourceName: "contracts/identity/NonFungibleRegistryEnumerableUpgradeable.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: false,
internalType: "uint256",
name: "tokenId",
type: "uint256",
},
{
indexed: false,
internalType: "string",
name: "label",
type: "string",
},
],
name: "LabelUpdated",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "bytes32",
name: "merkleRoot",
type: "bytes32",
},
{
indexed: false,
internalType: "bool",
name: "frozen",
type: "bool",
},
],
name: "MerkleRootUpdated",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "bytes32",
name: "role",
type: "bytes32",
},
{
indexed: true,
internalType: "bytes32",
name: "previousAdminRole",
type: "bytes32",
},
{
indexed: true,
internalType: "bytes32",
name: "newAdminRole",
type: "bytes32",
},
],
name: "RoleAdminChanged",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "bytes32",
name: "role",
type: "bytes32",
},
{
indexed: true,
internalType: "address",
name: "account",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "sender",
type: "address",
},
],
name: "RoleGranted",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "bytes32",
name: "role",
type: "bytes32",
},
{
indexed: true,
internalType: "address",
name: "account",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "sender",
type: "address",
},
],
name: "RoleRevoked",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "uint256",
name: "tokenId",
type: "uint256",
},
{
indexed: false,
internalType: "bytes32",
name: "registrationData",
type: "bytes32",
},
],
name: "StorageUpdated",
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",
},
{
inputs: [],
name: "DEFAULT_ADMIN_ROLE",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "REGISTRAR_ROLE",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "REGISTRAR_ROLE_ADMIN",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "allowLabelChange",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "allowStorageUpdate",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "allowTransfers",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
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: [],
name: "baseURI",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "uint256",
name: "tokenId",
type: "uint256",
},
],
name: "burn",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "burnAddress",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "burnFee",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "frozen",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
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: "bytes32",
name: "role",
type: "bytes32",
},
],
name: "getRoleAdmin",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "role",
type: "bytes32",
},
{
internalType: "uint256",
name: "index",
type: "uint256",
},
],
name: "getRoleMember",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "role",
type: "bytes32",
},
],
name: "getRoleMemberCount",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "role",
type: "bytes32",
},
{
internalType: "address",
name: "account",
type: "address",
},
],
name: "grantRole",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "role",
type: "bytes32",
},
{
internalType: "address",
name: "account",
type: "address",
},
],
name: "hasRole",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
name: "identityStakes",
outputs: [
{
internalType: "address",
name: "token",
type: "address",
},
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "string",
name: "name_",
type: "string",
},
{
internalType: "string",
name: "symbol_",
type: "string",
},
{
internalType: "address",
name: "_primaryRegistry",
type: "address",
},
{
internalType: "address",
name: "_registrar",
type: "address",
},
{
internalType: "address",
name: "_admin",
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: [],
name: "merkleRoot",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
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: "primaryRegistry",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "to",
type: "address",
},
{
internalType: "string",
name: "label",
type: "string",
},
{
internalType: "string",
name: "registrationData",
type: "string",
},
{
internalType: "uint256",
name: "tokenId",
type: "uint256",
},
],
name: "register",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "to",
type: "address",
},
{
internalType: "string",
name: "label",
type: "string",
},
{
internalType: "string",
name: "registrationData",
type: "string",
},
{
internalType: "uint256",
name: "tokenId",
type: "uint256",
},
],
name: "registerByToken",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "registrationFee",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "registrationToken",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
name: "registryMap",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
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: "",
type: "uint256",
},
],
name: "reverseRegistryMap",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "role",
type: "bytes32",
},
{
internalType: "address",
name: "account",
type: "address",
},
],
name: "revokeRole",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "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: [],
name: "schema",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "operator",
type: "address",
},
{
internalType: "bool",
name: "approved",
type: "bool",
},
],
name: "setApprovalForAll",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bytes32",
name: "_merkleRoot",
type: "bytes32",
},
{
internalType: "bool",
name: "freeze",
type: "bool",
},
],
name: "setMerkleRoot",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "_primaryRegistry",
type: "address",
},
],
name: "setPrimaryRegistry",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bytes",
name: "encodedParameters",
type: "bytes",
},
],
name: "setRegistryParameters",
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: [
{
internalType: "uint256",
name: "tokenId",
type: "uint256",
},
],
name: "tokenURINoBase",
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: "uint256",
name: "tokenId",
type: "uint256",
},
{
internalType: "string",
name: "label",
type: "string",
},
],
name: "updateLabel",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "uint256",
name: "tokenId",
type: "uint256",
},
{
internalType: "string",
name: "registrationData",
type: "string",
},
],
name: "updateRegistration",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
],
bytecode: "0x60806040523480156200001157600080fd5b50600054610100900460ff166200002f5760005460ff161562000039565b62000039620000de565b620000a15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600054610100900460ff16158015620000c4576000805461ffff19166101011790555b8015620000d7576000805461ff00191690555b5062000102565b6000620000f630620000fc60201b620021171760201c565b15905090565b3b151590565b6149b580620001126000396000f3fe608060405234801561001057600080fd5b50600436106102f15760003560e01c80636c0360eb1161019d578063a8f1c6d8116100e9578063d547741f116100a2578063f041b4a71161007c578063f041b4a71461071a578063f68e95531461072e578063f8895cc814610743578063fce589d81461074b57600080fd5b8063d547741f146106b8578063db0ed6a0146106cb578063e985e9c5146106de57600080fd5b8063a8f1c6d81461062d578063b88d4fde14610640578063bce8542e14610653578063c87b56dd1461067f578063ca15c87314610692578063cb9c6154146106a557600080fd5b80639010d07c1161015657806395d89b411161013057806395d89b41146105f7578063a10474c7146105ff578063a217fddf14610612578063a22cb4651461061a57600080fd5b80639010d07c146105be57806391d14854146105d157806393d0da07146105e457600080fd5b80636c0360eb146105565780636f4c25aa1461055e57806370a082311461057157806370d5ae05146105845780638792ffef146105985780638daf3f4e146105ab57600080fd5b80632f2ff15d1161025c57806347f00d5a116102155780635471a057116101ef5780635471a057146104fb57806358083969146105095780636017160b146105305780636352211e1461054357600080fd5b806347f00d5a146104ba5780634b08b0a3146104cd5780634f6ccce7146104e857600080fd5b80632f2ff15d146104085780632f745c591461041b57806336568abe1461042e57806338f292d51461044157806342842e0e1461049457806342966c68146104a757600080fd5b806318160ddd116102ae57806318160ddd146103995780632185810b146103a157806323b872dd146103b5578063248a9ca3146103c8578063267be25c146103eb5780632eb4a7ab146103fe57600080fd5b806301ffc9a7146102f6578063054f7d9c1461031e57806306fdde031461032c578063081812fc14610341578063095ea7b31461036c57806314c44e0914610381575b600080fd5b6103096103043660046140be565b610755565b60405190151581526020015b60405180910390f35b610169546103099060ff1681565b610334610766565b6040516103159190614518565b61035461034f36600461403f565b6107f8565b6040516001600160a01b039091168152602001610315565b61037f61037a366004613ffa565b610885565b005b61038b6101645481565b604051908152602001610315565b60fd5461038b565b610163546103099062010000900460ff1681565b61037f6103c3366004613e8c565b61099b565b61038b6103d636600461403f565b60009081526065602052604090206001015490565b61037f6103f9366004613f75565b6109f2565b61038b6101685481565b61037f610416366004614057565b610d7a565b61038b610429366004613ffa565b610da0565b61037f61043c366004614057565b610e36565b61047561044f36600461403f565b61016260205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610315565b61037f6104a2366004613e8c565b610eb4565b61037f6104b536600461403f565b610ecf565b61037f6104c8366004614396565b61104a565b6101635461035490630100000090046001600160a01b031681565b61038b6104f636600461403f565b611185565b610163546103099060ff1681565b61038b7fab17982698983e428c1b3359c794bb98c356bd485b8da9b6bffc27745eece3ba81565b61033461053e36600461403f565b611226565b61035461055136600461403f565b6112c1565b610334611338565b6101635461030990610100900460ff1681565b61038b61057f366004613e40565b611346565b61016554610354906001600160a01b031681565b61037f6105a6366004613f75565b6113cd565b61037f6105b93660046140f6565b6114d5565b6103546105cc36600461409d565b611887565b6103096105df366004614057565b6118a6565b61037f6105f2366004614396565b6118d1565b610334611a33565b61037f61060d366004613e40565b611a42565b61038b600081565b61037f610628366004613f3f565b611bd8565b61037f61063b366004614079565b611be3565b61037f61064e366004613ec7565b611cde565b61038b610661366004614135565b80516020818301810180516101608252928201919093012091525481565b61033461068d36600461403f565b611d35565b61038b6106a036600461403f565b611d40565b6103346106b336600461403f565b611d57565b61037f6106c6366004614057565b611f10565b61037f6106d9366004614167565b611f36565b6103096106ec366004613e5a565b6001600160a01b03918216600090815260ce6020908152604080832093909416825291909152205460ff1690565b61016754610354906001600160a01b031681565b61038b60008051602061496083398151915281565b610334612109565b61038b6101665481565b60006107608261211d565b92915050565b606060c9805461077590614895565b80601f01602080910402602001604051908101604052809291908181526020018280546107a190614895565b80156107ee5780601f106107c3576101008083540402835291602001916107ee565b820191906000526020600020905b8154815290600101906020018083116107d157829003601f168201915b5050505050905090565b600061080382612142565b6108695760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b50600090815260cd60205260409020546001600160a01b031690565b6000610890826112c1565b9050806001600160a01b0316836001600160a01b031614156108fe5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610860565b336001600160a01b038216148061091a575061091a81336106ec565b61098c5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610860565b610996838361215f565b505050565b6109a6335b826121cd565b6109c25760405162461bcd60e51b8152600401610860906145c4565b6109cb826122d5565b6109e75760405162461bcd60e51b8152600401610860906146ca565b610996838383612372565b61016354630100000090046001600160a01b0316610a785760405162461bcd60e51b815260206004820152603760248201527f4e6f6e46756e6769626c6552656769737472793a20726567697374726174696f60448201527f6e20627920746f6b656e206e6f7420656e61626c65642e0000000000000000006064820152608401610860565b610ab785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061251d92505050565b15610ad45760405162461bcd60e51b81526004016108609061462e565b61016354630100000090046001600160a01b03166323b872dd33610164546040516001600160e01b031960e085901b1681526001600160a01b0390921660048301523060248301526044820152606401602060405180830381600087803b158015610b3e57600080fd5b505af1158015610b52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b769190614023565b610bd65760405162461bcd60e51b815260206004820152602b60248201527f4e6f6e46756e6769626c6552656769737472793a20746f6b656e207472616e7360448201526a3332b9103330b4b632b21760a91b6064820152608401610860565b610c4c8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250879250612548915050565b60006127106101665461016454610c63919061481c565b610c6d9190614808565b610163546101655460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529293506301000000909104169063a9059cbb90604401602060405180830381600087803b158015610cc957600080fd5b505af1158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190614023565b506040805180820190915261016354630100000090046001600160a01b03168152610164546020820190610d3690849061483b565b9052600092835261016260209081526040909320815181546001600160a01b0319166001600160a01b03909116178155920151600190920191909155505050505050565b600082815260656020526040902060010154610d9681336125d4565b6109968383612638565b6000610dab83611346565b8210610e0d5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610860565b506001600160a01b0391909116600090815260fb60209081526040808320938352929052205490565b6001600160a01b0381163314610ea65760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610860565b610eb0828261265a565b5050565b61099683838360405180602001604052806000815250611cde565b610ed8336109a0565b610ef45760405162461bcd60e51b8152600401610860906145c4565b610efd8161267c565b600081815261016260205260409020600101541561104757600081815261016260205260409020546001600160a01b031663a9059cbb33600084815261016260205260409081902060010154905160e084901b6001600160e01b03191681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610f8e57600080fd5b505af1158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190614023565b6110255760405162461bcd60e51b815260206004820152602a60248201527f4e6f6e46756e6769626c6552656769737472793a20746f6b656e2074616e736660448201526932b9103330b4b632b21760b11b6064820152608401610860565b60008181526101626020526040812080546001600160a01b0319168155600101555b50565b611052612761565b6110b95760405162461bcd60e51b815260206004820152603260248201527f4e6f6e46756e6769626c6552656769737472793a2053746f726167652075706460448201527130ba34b7339034b9903234b9b0b13632b21760711b6064820152608401610860565b6110c4335b846121cd565b6110e05760405162461bcd60e51b8152600401610860906145c4565b6111208383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278e92505050565b7f2f0b1fafb1d28d13e045afb299578515ce12beeff8ee8ca9c6a32f18be41f0f483838360405160200161115592919061440b565b60408051601f198184030181528282528051602091820120938352820192909252015b60405180910390a1505050565b600061119060fd5490565b82106111f35760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610860565b60fd828154811061121457634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b610161602052600090815260409020805461124090614895565b80601f016020809104026020016040519081016040528092919081815260200182805461126c90614895565b80156112b95780601f1061128e576101008083540402835291602001916112b9565b820191906000526020600020905b81548152906001019060200180831161129c57829003601f168201915b505050505081565b600081815260cb60205260408120546001600160a01b0316806107605760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610860565b61016a805461124090614895565b60006001600160a01b0382166113b15760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610860565b506001600160a01b0316600090815260cc602052604090205490565b6113e5600080516020614960833981519152336118a6565b6114575760405162461bcd60e51b815260206004820152603a60248201527f4e6f6e46756e6769626c6552656769737472793a206d7573742068617665207260448201527f656769737472617220726f6c6520746f2072656769737465722e0000000000006064820152608401610860565b6114cd8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250879250612548915050565b505050505050565b6114ed600080516020614960833981519152336118a6565b6115095760405162461bcd60e51b81526004016108609061457d565b6000611517828401846141f9565b80515190915015611563578051805160009061154357634e487b7160e01b600052603260045260246000fd5b602002602001015161015f9080519060200190611561929190613a6d565b505b602081015151156115b657806020015160008151811061159357634e487b7160e01b600052603260045260246000fd5b602002602001015161016360006101000a81548160ff0219169083151502179055505b604081015151156116095780604001516000815181106115e657634e487b7160e01b600052603260045260246000fd5b602002602001015161016360016101000a81548160ff0219169083151502179055505b6060810151511561165c57806060015160008151811061163957634e487b7160e01b600052603260045260246000fd5b602002602001015161016360026101000a81548160ff0219169083151502179055505b608081015151156116bc57806080015160008151811061168c57634e487b7160e01b600052603260045260246000fd5b602002602001015161016360036101000a8154816001600160a01b0302191690836001600160a01b031602179055505b60a081015151156116fc578060a001516000815181106116ec57634e487b7160e01b600052603260045260246000fd5b6020026020010151610164819055505b60c0810151511561175c578060c0015160008151811061172c57634e487b7160e01b600052603260045260246000fd5b602002602001015161016560006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b60e08101515115611831576127108160e0015160008151811061178f57634e487b7160e01b600052603260045260246000fd5b602002602001015111156117fc5760405162461bcd60e51b815260206004820152602e60248201527f4e6f6e46756e6769626c6552656769737472793a206275726e466565206d757360448201526d3a1031329036329018981818181760911b6064820152608401610860565b8060e0015160008151811061182157634e487b7160e01b600052603260045260246000fd5b6020026020010151610166819055505b61010081015151156109965780610100015160008151811061186357634e487b7160e01b600052603260045260246000fd5b602002602001015161016a9080519060200190611881929190613a6d565b50505050565b600082815260976020526040812061189f908361281a565b9392505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6118d9612826565b61193e5760405162461bcd60e51b815260206004820152603060248201527f4e6f6e46756e6769626c6552656769737472793a204c6162656c20757064617460448201526f34b7339034b9903234b9b0b13632b21760811b6064820152608401610860565b611947336110be565b6119635760405162461bcd60e51b8152600401610860906145c4565b6119a282828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061251d92505050565b156119bf5760405162461bcd60e51b81526004016108609061462e565b8261016083836040516119d392919061440b565b9081526040805160209281900383019020929092556000858152610161909152206119ff908383613af1565b507fec8103a13d35079ee852a6e0f70658be4c82016236869c5283833b6721454b2c8383836040516111789392919061473e565b606060ca805461077590614895565b611a4d6000336118a6565b611aa55760405162461bcd60e51b815260206004820152602360248201527f4e6f6e46756e6769626c6552656769737472793a206d7573742062652061646d60448201526234b71760e91b6064820152608401610860565b6001600160a01b038116611ac75761016780546001600160a01b031916905550565b6040516301ffc9a760e01b81526380ac58cd60e01b60048201526001600160a01b038216906301ffc9a79060240160206040518083038186803b158015611b0d57600080fd5b505afa158015611b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b459190614023565b611bb75760405162461bcd60e51b815260206004820152603f60248201527f4e6f6e46756e6769626c6552656769737472793a204164647265737320646f6560448201527f73206e6f7420737570706f72742045524337323120696e746572666163652e006064820152608401610860565b61016780546001600160a01b0383166001600160a01b031990911617905550565b610eb0338383612853565b611bfb600080516020614960833981519152336118a6565b611c175760405162461bcd60e51b81526004016108609061457d565b6101695460ff1615611c845760405162461bcd60e51b815260206004820152603060248201527f4e6f6e46756e6769626c6552656769737472793a206d65726b6c65526f6f742060448201526f3430b9903132b2b710333937bd32b71760811b6064820152608401610860565b610168829055610169805460ff19168215159081179091556040805184815260ff909216151560208301527fc72271867375e4dc99b635d35b37f44698b889895effb6891602e23128d4f68d910160405180910390a15050565b611ce833836121cd565b611d045760405162461bcd60e51b8152600401610860906145c4565b611d0d836122d5565b611d295760405162461bcd60e51b8152600401610860906146ca565b61188184848484612922565b606061076082612955565b600081815260976020526040812061076090612ab8565b6060600061016a8054611d6990614895565b80601f0160208091040260200160405190810160405280929190818152602001828054611d9590614895565b8015611de25780601f10611db757610100808354040283529160200191611de2565b820191906000526020600020905b815481529060010190602001808311611dc557829003601f168201915b50505050509050805160001415611dfc5761189f83612955565b6000611e0784612955565b9050600082518251611e19919061483b565b6001600160401b03811115611e3e57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611e68576020820181803683370190505b50905060005b83518351611e7c919061483b565b811015611f015782845182611e9191906147f0565b81518110611eaf57634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b828281518110611eda57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611efa816148ca565b9050611e6e565b50949350505050565b50919050565b600082815260656020526040902060010154611f2c81336125d4565b610996838361265a565b600054610100900460ff16611f515760005460ff1615611f55565b303b155b611fb85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610860565b600054610100900460ff16158015611fda576000805461ffff19166101011790555b611fe2612ac2565b611fea612af3565b611ff2612b32565b611ffa612b32565b6120048686612b59565b61200f600083612b9a565b61202760008051602061496083398151915284612b9a565b61205f6000805160206149608339815191527fab17982698983e428c1b3359c794bb98c356bd485b8da9b6bffc27745eece3ba612ba4565b6120897fab17982698983e428c1b3359c794bb98c356bd485b8da9b6bffc27745eece3ba84612b9a565b61016380546001600160b81b03191662010001179055670de0b6b3a76400006101645561016580546001600160a01b038481166001600160a01b0319928316179092556101f461016655610167805492871692909116919091179055610169805460ff1916905580156114cd576000805461ff0019169055505050505050565b61015f805461124090614895565b3b151590565b60006001600160e01b0319821663780e9d6360e01b1480610760575061076082612bef565b600090815260cb60205260409020546001600160a01b0316151590565b600081815260cd6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612194826112c1565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006121d882612142565b6122395760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610860565b6000612244836112c1565b9050806001600160a01b0316846001600160a01b0316148061227f5750836001600160a01b0316612274846107f8565b6001600160a01b0316145b806122af57506001600160a01b03808216600090815260ce602090815260408083209388168352929052205460ff165b806122cd57506122cd600080516020614960833981519152856118a6565b949350505050565b610167546000906001600160a01b031615806107605750610167546040516370a0823160e01b81526001600160a01b03848116600483015260009216906370a082319060240160206040518083038186803b15801561233357600080fd5b505afa158015612347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236b919061437e565b1192915050565b826001600160a01b0316612385826112c1565b6001600160a01b0316146123ed5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610860565b6001600160a01b03821661244f5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610860565b61245a838383612c2