{
  "_format": "hh3-artifact-1",
  "contractName": "LSP8Mintable",
  "sourceName": "contracts/presets/LSP8Mintable.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "newOwner_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "lsp4TokenType_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "lsp8TokenIdFormat_",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AccessControlBadConfirmation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AccessControlCannotSetAdminForDefaultAdminRole",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "neededRole",
          "type": "bytes32"
        }
      ],
      "name": "AccessControlUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC725Y_DataKeysValuesEmptyArray",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC725Y_DataKeysValuesLengthMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC725Y_MsgValueDisallowed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "storedData",
          "type": "bytes"
        }
      ],
      "name": "InvalidExtensionAddress",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "InvalidFunctionSelector",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP4TokenNameNotEditable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP4TokenSymbolNotEditable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP4TokenTypeNotEditable",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "callIndex",
          "type": "uint256"
        }
      ],
      "name": "LSP8BatchCallFailed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP8CannotSendToAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP8CannotUseAddressZeroAsOperator",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP8InvalidTransferBatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP8MintDisabled",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        }
      ],
      "name": "LSP8NonExistentTokenId",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        }
      ],
      "name": "LSP8NonExistingOperator",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "LSP8NotTokenOperator",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "LSP8NotTokenOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenReceiver",
          "type": "address"
        }
      ],
      "name": "LSP8NotifyTokenReceiverContractMissingLSP1Interface",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenReceiver",
          "type": "address"
        }
      ],
      "name": "LSP8NotifyTokenReceiverIsEOA",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        }
      ],
      "name": "LSP8OperatorAlreadyAuthorized",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        }
      ],
      "name": "LSP8RevokeOperatorNotAuthorized",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP8TokenContractCannotHoldValue",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        }
      ],
      "name": "LSP8TokenIdAlreadyMinted",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP8TokenIdFormatNotEditable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP8TokenIdsDataEmptyArray",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP8TokenIdsDataLengthMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP8TokenOwnerCannotBeOperator",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "oldOwner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "LSP8TokenOwnerChanged",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "functionSelector",
          "type": "bytes4"
        }
      ],
      "name": "NoExtensionFoundForFunctionSelector",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OwnableCannotSetZeroAddressAsOwner",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "dataKey",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "dataValue",
          "type": "bytes"
        }
      ],
      "name": "DataChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        }
      ],
      "name": "MintingStatusChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "operatorNotificationData",
          "type": "bytes"
        }
      ],
      "name": "OperatorAuthorizationChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "notified",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "operatorNotificationData",
          "type": "bytes"
        }
      ],
      "name": "OperatorRevoked",
      "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": "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": true,
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "dataKey",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "dataValue",
          "type": "bytes"
        }
      ],
      "name": "TokenIdDataChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "force",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MINTER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "operatorNotificationData",
          "type": "bytes"
        }
      ],
      "name": "authorizeOperator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "batchCalls",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "disableMinting",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "dataKey",
          "type": "bytes32"
        }
      ],
      "name": "getData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "dataValue",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "dataKeys",
          "type": "bytes32[]"
        }
      ],
      "name": "getDataBatch",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "dataValues",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "tokenIds",
          "type": "bytes32[]"
        },
        {
          "internalType": "bytes32[]",
          "name": "dataKeys",
          "type": "bytes32[]"
        }
      ],
      "name": "getDataBatchForTokenIds",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "dataValues",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "dataKey",
          "type": "bytes32"
        }
      ],
      "name": "getDataForTokenId",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "dataValue",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        }
      ],
      "name": "getOperatorsOf",
      "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"
        }
      ],
      "name": "getRoleMembers",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "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": [],
      "name": "isMintable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        }
      ],
      "name": "isOperatorFor",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "force",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "callerConfirmation",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "notify",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "operatorNotificationData",
          "type": "bytes"
        }
      ],
      "name": "revokeOperator",
      "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": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "rolesOf",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "dataKey",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "dataValue",
          "type": "bytes"
        }
      ],
      "name": "setData",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "dataKeys",
          "type": "bytes32[]"
        },
        {
          "internalType": "bytes[]",
          "name": "dataValues",
          "type": "bytes[]"
        }
      ],
      "name": "setDataBatch",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "tokenIds",
          "type": "bytes32[]"
        },
        {
          "internalType": "bytes32[]",
          "name": "dataKeys",
          "type": "bytes32[]"
        },
        {
          "internalType": "bytes[]",
          "name": "dataValues",
          "type": "bytes[]"
        }
      ],
      "name": "setDataBatchForTokenIds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "dataKey",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "dataValue",
          "type": "bytes"
        }
      ],
      "name": "setDataForTokenId",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "adminRole",
          "type": "bytes32"
        }
      ],
      "name": "setRoleAdmin",
      "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": [
        {
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        }
      ],
      "name": "tokenIdsOf",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        }
      ],
      "name": "tokenOwnerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "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": "bytes32",
          "name": "tokenId",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "force",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "transfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "from",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "to",
          "type": "address[]"
        },
        {
          "internalType": "bytes32[]",
          "name": "tokenId",
          "type": "bytes32[]"
        },
        {
          "internalType": "bool[]",
          "name": "force",
          "type": "bool[]"
        },
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "transferBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x608060405234801561000f575f5ffd5b50604051614c42380380614c4283398101604081905261002e91610825565b6001858585858584848484816100433361022e565b6001600160a01b03811661006a576040516306b620db60e21b815260040160405180910390fd5b61007381610251565b506040805180820190915260048152632936598960e21b60208201526100ba907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c906102a0565b6100e47fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1856102a0565b61010e7f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756846102a0565b6040805160208101839052610155917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f198184030181529190526102a0565b505060408051602081018590526101a093507ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d92500160408051601f198184030181529190526102f4565b506101c293505f92506101bd9150505f546001600160a01b031690565b6103b4565b6009805460ff19168215159081179091556040517f41f386d449eec03c1c3b75bbba9c18df70aa19779ff47f68eab4b6a66fb399d4905f90a28015610223576102235f516020614c225f395f51905f526101bd5f546001600160a01b031690565b505050505050610a73565b6102455f516020614c225f395f51905f525f610432565b61024e81610497565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8281526001602052604090206102b7828261093d565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516102e891906109f7565b60405180910390a25050565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201610334576040516385c169bd60e01b815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa820161037457604051630eceab6760e31b815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016102a057604051634ef6d7fb60e01b815260040160405180910390fd5b5f8281526007602052604081206103cb908361052d565b9050801561042d576001600160a01b0382165f9081526008602052604090206103f4908461054a565b5060405133906001600160a01b0384169085907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d905f90a45b505050565b816104505760405163d0dc904b60e01b815260040160405180910390fd5b5f82815260066020526040808220805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b5f546001600160a01b03166104ab82610251565b6001600160a01b0381165f9081526008602052604081206104cb90610555565b90505f5b8151811015610527575f8282815181106104eb576104eb610a2c565b60200260200101519050610505818561056860201b60201c565b6001600160a01b0385161561051e5761051e81866103b4565b506001016104cf565b50505050565b5f610541836001600160a01b0384166105e5565b90505b92915050565b5f61054183836105e5565b60605f61056183610631565b9392505050565b5f82815260076020526040812061057f908361068a565b9050801561042d576001600160a01b0382165f9081526008602052604090206105a8908461069e565b5060405133906001600160a01b0384169085907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b905f90a4505050565b5f81815260018301602052604081205461062a57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610544565b505f610544565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561067e57602002820191905f5260205f20905b81548152602001906001019080831161066a575b50505050509050919050565b5f610541836001600160a01b0384166106a5565b5f61054183835b5f818152600183016020526040812054801561077f575f6106c7600183610a40565b85549091505f906106da90600190610a40565b9050818114610739575f865f0182815481106106f8576106f8610a2c565b905f5260205f200154905080875f01848154811061071857610718610a2c565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061074a5761074a610a5f565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610544565b5f915050610544565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126107ab575f5ffd5b81516001600160401b038111156107c4576107c4610788565b604051601f8201601f19908116603f011681016001600160401b03811182821017156107f2576107f2610788565b604052818152838201602001851015610809575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f5f60a08688031215610839575f5ffd5b85516001600160401b0381111561084e575f5ffd5b61085a8882890161079c565b602088015190965090506001600160401b03811115610877575f5ffd5b6108838882890161079c565b604088015190955090506001600160a01b03811681146108a1575f5ffd5b6060870151608090970151959894975095949392505050565b600181811c908216806108ce57607f821691505b6020821081036108ec57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561042d57805f5260205f20601f840160051c810160208510156109175750805b601f840160051c820191505b81811015610936575f8155600101610923565b5050505050565b81516001600160401b0381111561095657610956610788565b61096a8161096484546108ba565b846108f2565b6020601f82116001811461099c575f83156109855750848201515b5f19600385901b1c1916600184901b178455610936565b5f84815260208120601f198516915b828110156109cb57878501518255602094850194600190920191016109ab565b50848210156109e857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561054457634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b6141a280610a805f395ff3fe608060405260043610610288575f3560e01c80637e87632c11610152578063a3b261f2116100ca578063d547741f1161007e578063db8c966311610063578063db8c966314610804578063dedff9c614610823578063f2fde38b1461084257610313565b8063d547741f146107c6578063d6c1407c146107e557610313565b8063be9f0e6f116100af578063be9f0e6f14610755578063ca15c87314610774578063d53913931461079357610313565b8063a3b261f214610717578063af255b611461073657610313565b80639010d07c11610121578063979024211161010657806397902421146106d2578063a217fddf146106e5578063a3246ad3146106f857610313565b80639010d07c1461069457806391d14854146106b357610313565b80637e87632c1461061a5780637f23690c1461063957806386a10ddd1461064c5780638da5cb5b1461066b57610313565b80632f2ff15d1161020057806354f6127f116101b457806370a082311161019957806370a08231146105d3578063715018a6146105f25780637e5cd5c11461060657610313565b806354f6127f146105955780636963d438146105b457610313565b806346b45af7116101e557806346b45af71461053157806349a6078d1461054a578063511b69521461057657610313565b80632f2ff15d146104f357806336568abe1461051257610313565b80631e4e009111610257578063248a9ca31161023c578063248a9ca31461047d5780632a3654a4146104a85780632de94807146104c757610313565b80631e4e009114610418578063217b22701461043957610313565b806301ffc9a71461036e57806316e023b3146103a257806318160ddd146103ce5780631d26fce6146103ec57610313565b3661031357345f036102e1576040517fe5099ee30000000000000000000000000000000000000000000000000000000081526004016102d89060208082526004908201525f604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f36606082826004811015610356576040517fe5099ee30000000000000000000000000000000000000000000000000000000081526004016102d89291906131d7565b50506103628383610861565b80519350602001915050f35b348015610379575f5ffd5b5061038d610388366004613223565b6109f6565b60405190151581526020015b60405180910390f35b3480156103ad575f5ffd5b506103c16103bc366004613262565b610a0f565b60405161039991906132ce565b3480156103d9575f5ffd5b506002545b604051908152602001610399565b3480156103f7575f5ffd5b5061040b6104063660046133e9565b610a22565b604051610399919061344e565b348015610423575f5ffd5b50610437610432366004613262565b610b22565b005b348015610444575f5ffd5b506104586104533660046134cf565b610b3b565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610399565b348015610488575f5ffd5b506103de6104973660046134cf565b5f9081526006602052604090205490565b3480156104b3575f5ffd5b5061038d6104c236600461350e565b610b9a565b3480156104d2575f5ffd5b506104e66104e1366004613536565b610ba5565b604051610399919061354f565b3480156104fe575f5ffd5b5061043761050d366004613591565b610bd5565b34801561051d575f5ffd5b5061043761052c366004613591565b610bf6565b34801561053c575f5ffd5b5060095461038d9060ff1681565b348015610555575f5ffd5b506105696105643660046134cf565b610cd2565b60405161039991906135bb565b348015610581575f5ffd5b506104376105903660046136a9565b610cf3565b3480156105a0575f5ffd5b506103c16105af3660046134cf565b610d6c565b3480156105bf575f5ffd5b5061040b6105ce36600461371d565b610d77565b3480156105de575f5ffd5b506103de6105ed366004613536565b610ebb565b3480156105fd575f5ffd5b50610437610ee8565b348015610611575f5ffd5b50610437610efb565b348015610625575f5ffd5b506104376106343660046138d1565b610f93565b6104376106473660046139a7565b611098565b348015610657575f5ffd5b506104376106663660046139e1565b6110e2565b348015610676575f5ffd5b505f5473ffffffffffffffffffffffffffffffffffffffff16610458565b34801561069f575f5ffd5b506104586106ae366004613262565b611332565b3480156106be575f5ffd5b5061038d6106cd366004613591565b611349565b6104376106e0366004613a34565b611354565b3480156106f0575f5ffd5b506103de5f81565b348015610703575f5ffd5b506105696107123660046134cf565b61139e565b348015610722575f5ffd5b506104e6610731366004613536565b6113b7565b348015610741575f5ffd5b50610437610750366004613a8f565b6113e7565b348015610760575f5ffd5b5061043761076f366004613af3565b61141d565b34801561077f575f5ffd5b506103de61078e3660046134cf565b611516565b34801561079e575f5ffd5b506103de7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b3480156107d1575f5ffd5b506104376107e0366004613591565b61152c565b3480156107f0575f5ffd5b506104376107ff366004613b77565b6115cf565b34801561080f575f5ffd5b5061043761081e366004613a8f565b6115e2565b34801561082e575f5ffd5b5061040b61083d366004613bad565b611765565b34801561084d575f5ffd5b5061043761085c366004613536565b61180f565b60605f6108905f357fffffffff00000000000000000000000000000000000000000000000000000000166118c6565b5090507fffffffff000000000000000000000000000000000000000000000000000000005f351673ffffffffffffffffffffffffffffffffffffffff8216610929576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000090911660048201526024016102d8565b505f5f8273ffffffffffffffffffffffffffffffffffffffff16348787333460405160200161095b9493929190613bdf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261099391613c22565b5f6040518083038185875af1925050503d805f81146109cd576040519150601f19603f3d011682016040523d82523d5f602084013e6109d2565b606091505b509150915081156109e75792506109f0915050565b80518060208301fd5b92915050565b5f610a0082611984565b806109f057506109f082611a67565b6060610a1b8383611acb565b9392505050565b60608151835114610a5f576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825167ffffffffffffffff811115610a7957610a796132e0565b604051908082528060200260200182016040528015610aac57816020015b6060815260200190600190039081610a975790505b5090505f5b8351811015610b1b57610af6848281518110610acf57610acf613c38565b6020026020010151848381518110610ae957610ae9613c38565b6020026020010151611acb565b828281518110610b0857610b08613c38565b6020908102919091010152600101610ab1565b5092915050565b5f610b2c81611b9e565b610b368383611ba8565b505050565b5f8181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff168281610b1b576040517fae8f9a360000000000000000000000000000000000000000000000000000000081526004016102d891815260200190565b5f610a1b8383611c26565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526008602052604090206060906109f090611c7b565b5f82815260066020526040902054610bec81611b9e565b610b368383611c87565b73ffffffffffffffffffffffffffffffffffffffff81163314610c45576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81158015610c6957505f5473ffffffffffffffffffffffffffffffffffffffff1633145b1533839091610cc2576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102d8565b5050610cce8233611d1e565b5050565b6060610cdd82611db5565b5f8281526005602052604090206109f090611c7b565b610cfd3384611c26565b83339091610d56576040517f1294d2a9000000000000000000000000000000000000000000000000000000008152600481019290925273ffffffffffffffffffffffffffffffffffffffff1660248201526044016102d8565b5050610d658585858585611e16565b5050505050565b60606109f0826120bf565b60608167ffffffffffffffff811115610d9257610d926132e0565b604051908082528060200260200182016040528015610dc557816020015b6060815260200190600190039081610db05790505b5090505f5b82811015610b1b575f8030868685818110610de757610de7613c38565b9050602002810190610df99190613c65565b604051610e07929190613ccd565b5f60405180830381855af49150503d805f8114610e3f576040519150601f19603f3d011682016040523d82523d5f602084013e610e44565b606091505b509150915081610e9357805115610e5e5780518082602001fd5b6040517f234eb819000000000000000000000000000000000000000000000000000000008152600481018490526024016102d8565b80848481518110610ea657610ea6613c38565b60209081029190910101525050600101610dca565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526004602052604081206109f09061215e565b610ef0612167565b610ef95f6121e7565b565b610f03612167565b60095460ff16610f3f576040517f4d8af03d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040515f907f41f386d449eec03c1c3b75bbba9c18df70aa19779ff47f68eab4b6a66fb399d4908290a2565b8451845181148015610fa55750835181145b8015610fb15750825181145b8015610fbd5750815181145b610ff3576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8181101561108f5761108787828151811061101257611012613c38565b602002602001015187838151811061102c5761102c613c38565b602002602001015187848151811061104657611046613c38565b602002602001015187858151811061106057611060613c38565b602002602001015187868151811061107a5761107a613c38565b6020026020010151610cf3565b600101610ff5565b50505050505050565b6110a0612167565b34156110d8576040517ff36ba73700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cce828261221a565b5f6110ec83610b3b565b905080833373ffffffffffffffffffffffffffffffffffffffff83168114611169576040517f5b271ea200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152602481019290925290911660448201526064016102d8565b50505073ffffffffffffffffffffffffffffffffffffffff84166111b9576040517f9577b8b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361121e576040517f89fdad6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f838152600560205260408120611235908661227d565b905084848261128e576040517fa7626b6800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102d8565b5050838273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc236671215866040516112ee91906132ce565b60405180910390a45f338560018660405160200161130f9493929190613cdc565b604051602081830303815290604052905061132a868261229e565b505050505050565b5f828152600760205260408120610a1b90836122c9565b5f610a1b83836122d4565b61135c612167565b3415611394576040517ff36ba73700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cce82826122eb565b5f8181526007602052604090206060906109f090611c7b565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526004602052604090206060906109f090611c7b565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661141181611b9e565b610d65858585856123af565b611425612167565b81518351148015611437575080518251145b61146d576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f036114a7576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8351811015611510576115088482815181106114c7576114c7613c38565b60200260200101518483815181106114e1576114e1613c38565b60200260200101518484815181106114fb576114fb613c38565b60200260200101516123f7565b6001016114a9565b50505050565b5f8181526007602052604081206109f09061215e565b5f8281526006602052604090205461154381611b9e565b8215801561156a57505f5473ffffffffffffffffffffffffffffffffffffffff8381169116145b15828490916115c3576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102d8565b5050610b368383611d1e565b6115d7612167565b610b368383836123f7565b5f6115ec84610b3b565b90503373ffffffffffffffffffffffffffffffffffffffff8216146116885733818573ffffffffffffffffffffffffffffffffffffffff88168314611684576040517f760b5acd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015292909116602483015260448201526064016102d8565b5050505b73ffffffffffffffffffffffffffffffffffffffff85166116d5576040517f9577b8b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361173a576040517f89fdad6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117478582868686612485565b8215610d65575f81855f8560405160200161130f9493929190613cdc565b6060815167ffffffffffffffff811115611781576117816132e0565b6040519080825280602002602001820160405280156117b457816020015b606081526020019060019003908161179f5790505b5090505f5b8251811015611809576117e48382815181106117d7576117d7613c38565b60200260200101516120bf565b8282815181106117f6576117f6613c38565b60209081029190910101526001016117b9565b50919050565b611817612167565b73ffffffffffffffffffffffffffffffffffffffff81166118ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102d8565b6118c3816121e7565b50565b5f80806119157fcee78b4094da86011096000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008616612567565b90505f611921826120bf565b905080516014148061193257508051155b819061196b576040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016102d891906132ce565b5061197581613d22565b60601c95600195509350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480611a1657507fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000145b806109f057507fffffffff0000000000000000000000000000000000000000000000000000000082167f90832245000000000000000000000000000000000000000000000000000000001492915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f3a271706000000000000000000000000000000000000000000000000000000001480611abc5750611abc826125ea565b806109f057506109f08261263f565b606060015f8484604051602001611aec929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020015f208054611b1a90613d8e565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4690613d8e565b8015611b915780601f10611b6857610100808354040283529160200191611b91565b820191905f5260205f20905b815481529060010190602001808311611b7457829003601f168201915b5050505050905092915050565b6118c3813361269a565b81611bdf576040517fd0dc904b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260066020526040808220805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b5f611c3082610b3b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610a1b57505f828152600560205260409020610a1b90846126fc565b60605f610a1b8361272a565b5f828152600760205260408120611c9e908361227d565b90508015610b365773ffffffffffffffffffffffffffffffffffffffff82165f908152600860205260409020611cd49084612782565b50604051339073ffffffffffffffffffffffffffffffffffffffff84169085907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d905f90a4505050565b5f828152600760205260408120611d35908361278d565b90508015610b365773ffffffffffffffffffffffffffffffffffffffff82165f908152600860205260409020611d6b90846127ae565b50604051339073ffffffffffffffffffffffffffffffffffffffff84169085907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b905f90a4505050565b5f8181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615158190610cce576040517fae8f9a360000000000000000000000000000000000000000000000000000000081526004016102d891815260200190565b5f611e2084610b3b565b905080848773ffffffffffffffffffffffffffffffffffffffff81811690841614611ea0576040517f5b271ea200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152602481019290925290911660448201526064016102d8565b50505073ffffffffffffffffffffffffffffffffffffffff8516611ef0576040517f24ecef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611efa85610b3b565b905084828273ffffffffffffffffffffffffffffffffffffffff80821690831614611f78576040517f5a9c31d3000000000000000000000000000000000000000000000000000000008152600481019390935273ffffffffffffffffffffffffffffffffffffffff91821660248401521660448201526064016102d8565b505050611f8587866127b9565b73ffffffffffffffffffffffffffffffffffffffff87165f908152600460205260409020611fb390866127ae565b5073ffffffffffffffffffffffffffffffffffffffff86165f908152600460205260409020611fe29086612782565b505f858152600360205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518792918a16907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf9061206d9033908a908a90613dd9565b60405180910390a45f338888888760405160200161208f959493929190613e18565b60405160208183030381529060405290506120aa888261280c565b6120b5878683612837565b5050505050505050565b5f8181526001602052604090208054606091906120db90613d8e565b80601f016020809104026020016040519081016040528092919081815260200182805461210790613d8e565b80156121525780601f1061212957610100808354040283529160200191612152565b820191905f5260205f20905b81548152906001019060200180831161213557829003601f168201915b50505050509050919050565b5f6109f0825490565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610ef9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102d8565b6122117f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a65f611ba8565b6118c3816129f0565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e738201612273576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cce8282612aa1565b5f610a1b8373ffffffffffffffffffffffffffffffffffffffff8416612c00565b610cce827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f0097083612c4c565b5f610a1b8383612ce5565b5f828152600760205260408120610a1b90836126fc565b8051825114612326576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81515f03612360576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610b36576123a783828151811061238057612380613c38565b602002602001015183838151811061239a5761239a613c38565b602002602001015161221a565b600101612362565b60095460ff166123eb576040517f4d8af03d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61151084848484612d0b565b8060015f8585604051602001612417929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020015f2090816124469190613ec8565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb8360405161247891906132ce565b60405180910390a3505050565b5f83815260056020526040812061249c908761278d565b90508584826124f5576040517f4aa31a8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102d8565b5050838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c8686604051612557929190613fdf565b60405180910390a4505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201525f602a82018190527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008416602c830152918291016040516020818303038152906040529050806125e290613ff9565b949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa918fa6b0000000000000000000000000000000000000000000000000000000014806109f057506109f082612f1e565b5f8061266a7f01ffc9a7000000000000000000000000000000000000000000000000000000006118c6565b50905073ffffffffffffffffffffffffffffffffffffffff811661269057505f92915050565b610a1b8184612fb4565b6126a482826122d4565b81839091611510576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102d8565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515610a1b565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561215257602002820191905f5260205f20905b8154815260200190600101908083116127635750505050509050919050565b5f610a1b8383612c00565b5f610a1b8373ffffffffffffffffffffffffffffffffffffffff8416613080565b5f610a1b8383613080565b5f818152600560205260408120906127d08261215e565b90505f5f5b8281101561132a576127e7845f6122c9565b91506128048287875f60405180602001604052805f815250612485565b6001016127d5565b610cce827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab0083612c4c565b612861837f6bb56a1400000000000000000000000000000000000000000000000000000000612fb4565b1561293a576040517f6bb56a1400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690636bb56a14906128da907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d90859060040161403b565b5f604051808303815f875af11580156128f5573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115109190810190614053565b81610b365773ffffffffffffffffffffffffffffffffffffffff83163b156129a6576040517f4349776d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016102d8565b6040517f0317313700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016102d8565b5f5473ffffffffffffffffffffffffffffffffffffffff16612a1182613163565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600860205260408120612a3e90611c7b565b90505f5b8151811015611510575f828281518110612a5e57612a5e613c38565b60200260200101519050612a728185611d1e565b73ffffffffffffffffffffffffffffffffffffffff851615612a9857612a988186611c87565b50600101612a42565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201612afa576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201612b53576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201612bac576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f828152600160205260409020612bc38282613ec8565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051612bf491906132ce565b60405180910390a25050565b5f818152600183016020526040812054612c4557508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556109f0565b505f6109f0565b612c8c73ffffffffffffffffffffffffffffffffffffffff84167f6bb56a1400000000000000000000000000000000000000000000000000000000612fb4565b15610b36576040517f6bb56a1400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690636bb56a14906128da908590859060040161403b565b5f825f018281548110612cfa57612cfa613c38565b905f5260205f200154905092915050565b73ffffffffffffffffffffffffffffffffffffffff8416612d58576040517f24ecef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260036020526040902054839073ffffffffffffffffffffffffffffffffffffffff1615612db8576040517f34c7b5110000000000000000000000000000000000000000000000000000000081526004016102d891815260200190565b505f83815260036020526040902054839073ffffffffffffffffffffffffffffffffffffffff1615612e19576040517f34c7b5110000000000000000000000000000000000000000000000000000000081526004016102d891815260200190565b5060025f8154612e28906140f5565b9091555073ffffffffffffffffffffffffffffffffffffffff84165f908152600460205260409020612e5a9084612782565b505f8381526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf90612ee090339088908890613dd9565b60405180910390a45f335f868685604051602001612f02959493929190613e18565b6040516020818303038152906040529050610d65858483612837565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f629aa6940000000000000000000000000000000000000000000000000000000014806109f057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146109f0565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017815282515f9392849283928392918391908a617530fa92503d91505f51905082801561306a575060208210155b801561307557505f81115b979650505050505050565b5f818152600183016020526040812054801561315a575f6130a260018361412c565b85549091505f906130b59060019061412c565b9050818114613114575f865f0182815481106130d3576130d3613c38565b905f5260205f200154905080875f0184815481106130f3576130f3613c38565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806131255761312561413f565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506109f0565b5f9150506109f0565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60208152816020820152818360408301375f818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b5f60208284031215613233575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610a1b575f5ffd5b5f5f60408385031215613273575f5ffd5b50508035926020909101359150565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610a1b6020830184613282565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613354576133546132e0565b604052919050565b5f67ffffffffffffffff821115613375576133756132e0565b5060051b60200190565b5f82601f83011261338e575f5ffd5b81356133a161339c8261335c565b61330d565b8082825260208201915060208360051b8601019250858311156133c2575f5ffd5b602085015b838110156133df5780358352602092830192016133c7565b5095945050505050565b5f5f604083850312156133fa575f5ffd5b823567ffffffffffffffff811115613410575f5ffd5b61341c8582860161337f565b925050602083013567ffffffffffffffff811115613438575f5ffd5b6134448582860161337f565b9150509250929050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156134c3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526134ae858351613282565b94506020938401939190910190600101613474565b50929695505050505050565b5f602082840312156134df575f5ffd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114613509575f5ffd5b919050565b5f5f6040838503121561351f575f5ffd5b613528836134e6565b946020939093013593505050565b5f60208284031215613546575f5ffd5b610a1b826134e6565b602080825282518282018190525f918401906040840190835b81811015613586578351835260209384019390920191600101613568565b509095945050505050565b5f5f604083850312156135a2575f5ffd5b823591506135b2602084016134e6565b90509250929050565b602080825282518282018190525f918401906040840190835b8181101561358657835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016135d4565b80358015158114613509575f5ffd5b5f67ffffffffffffffff821115613630576136306132e0565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f83011261366b575f5ffd5b813561367961339c82613617565b81815284602083860101111561368d575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a086880312156136bd575f5ffd5b6136c6866134e6565b94506136d4602087016134e6565b9350604086013592506136e960608701613608565b9150608086013567ffffffffffffffff811115613704575f5ffd5b6137108882890161365c565b9150509295509295909350565b5f5f6020838503121561372e575f5ffd5b823567ffffffffffffffff811115613744575f5ffd5b8301601f81018513613754575f5ffd5b803567ffffffffffffffff81111561376a575f5ffd5b8560208260051b840101111561377e575f5ffd5b6020919091019590945092505050565b5f82601f83011261379d575f5ffd5b81356137ab61339c8261335c565b8082825260208201915060208360051b8601019250858311156137cc575f5ffd5b602085015b838110156133df576137e2816134e6565b8352602092830192016137d1565b5f82601f8301126137ff575f5ffd5b813561380d61339c8261335c565b8082825260208201915060208360051b86010192508583111561382e575f5ffd5b602085015b838110156133df5761384481613608565b835260209283019201613833565b5f82601f830112613861575f5ffd5b813561386f61339c8261335c565b8082825260208201915060208360051b860101925085831115613890575f5ffd5b602085015b838110156133df57803567ffffffffffffffff8111156138b3575f5ffd5b6138c2886020838a010161365c565b84525060209283019201613895565b5f5f5f5f5f60a086880312156138e5575f5ffd5b853567ffffffffffffffff8111156138fb575f5ffd5b6139078882890161378e565b955050602086013567ffffffffffffffff811115613923575f5ffd5b61392f8882890161378e565b945050604086013567ffffffffffffffff81111561394b575f5ffd5b6139578882890161337f565b935050606086013567ffffffffffffffff811115613973575f5ffd5b61397f888289016137f0565b925050608086013567ffffffffffffffff81111561399b575f5ffd5b61371088828901613852565b5f5f604083850312156139b8575f5ffd5b82359150602083013567ffffffffffffffff8111156139d5575f5ffd5b6134448582860161365c565b5f5f5f606084860312156139f3575f5ffd5b6139fc846134e6565b925060208401359150604084013567ffffffffffffffff811115613a1e575f5ffd5b613a2a8682870161365c565b9150509250925092565b5f5f60408385031215613a45575f5ffd5b823567ffffffffffffffff811115613a5b575f5ffd5b613a678582860161337f565b925050602083013567ffffffffffffffff811115613a83575f5ffd5b61344485828601613852565b5f5f5f5f60808587031215613aa2575f5ffd5b613aab856134e6565b935060208501359250613ac060408601613608565b9150606085013567ffffffffffffffff811115613adb575f5ffd5b613ae78782880161365c565b91505092959194509250565b5f5f5f60608486031215613b05575f5ffd5b833567ffffffffffffffff811115613b1b575f5ffd5b613b278682870161337f565b935050602084013567ffffffffffffffff811115613b43575f5ffd5b613b4f8682870161337f565b925050604084013567ffffffffffffffff811115613b6b575f5ffd5b613a2a86828701613852565b5f5f5f60608486031215613b89575f5ffd5b8335925060208401359150604084013567ffffffffffffffff811115613a1e575f5ffd5b5f60208284031215613bbd575f5ffd5b813567ffffffffffffffff811115613bd3575f5ffd5b6125e28482850161337f565b8385823760609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016919092019081526014810191909152603401919050565b5f82518060208501845e5f920191825250919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c98575f5ffd5b83018035915067ffffffffffffffff821115613cb2575f5ffd5b602001915036819003821315613cc6575f5ffd5b9250929050565b818382375f9101908152919050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201528215156040820152608060608201525f613d186080830184613282565b9695505050505050565b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015613d87577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b5050919050565b600181811c90821680613da257607f821691505b602082108103611809577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff841681528215156020820152606060408201525f613e0f6060830184613282565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015273ffffffffffffffffffffffffffffffffffffffff8416604082015282606082015260a060808201525f61307560a0830184613282565b601f821115610b3657805f5260205f20601f840160051c81016020851015613ea95750805b601f840160051c820191505b81811015610d65575f8155600101613eb5565b815167ffffffffffffffff811115613ee257613ee26132e0565b613ef681613ef08454613d8e565b84613e84565b6020601f821160018114613f47575f8315613f115750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610d65565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015613f945787850151825560209485019460019092019101613f74565b5084821015613fd057868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b8215158152604060208201525f6125e26040830184613282565b80516020808301519190811015611809577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b828152604060208201525f6125e26040830184613282565b5f60208284031215614063575f5ffd5b815167ffffffffffffffff811115614079575f5ffd5b8201601f81018413614089575f5ffd5b805161409761339c82613617565b8181528560208385010111156140ab575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614125576141256140c8565b5060010190565b818103818111156109f0576109f06140c8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea26469706673582212203758e2efd5ee1265dcd1f3f438a8d6a2b5f387d5a6819184aab686d29fbbc4bb64736f6c634300081c00339f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",
  "deployedBytecode": "0x608060405260043610610288575f3560e01c80637e87632c11610152578063a3b261f2116100ca578063d547741f1161007e578063db8c966311610063578063db8c966314610804578063dedff9c614610823578063f2fde38b1461084257610313565b8063d547741f146107c6578063d6c1407c146107e557610313565b8063be9f0e6f116100af578063be9f0e6f14610755578063ca15c87314610774578063d53913931461079357610313565b8063a3b261f214610717578063af255b611461073657610313565b80639010d07c11610121578063979024211161010657806397902421146106d2578063a217fddf146106e5578063a3246ad3146106f857610313565b80639010d07c1461069457806391d14854146106b357610313565b80637e87632c1461061a5780637f23690c1461063957806386a10ddd1461064c5780638da5cb5b1461066b57610313565b80632f2ff15d1161020057806354f6127f116101b457806370a082311161019957806370a08231146105d3578063715018a6146105f25780637e5cd5c11461060657610313565b806354f6127f146105955780636963d438146105b457610313565b806346b45af7116101e557806346b45af71461053157806349a6078d1461054a578063511b69521461057657610313565b80632f2ff15d146104f357806336568abe1461051257610313565b80631e4e009111610257578063248a9ca31161023c578063248a9ca31461047d5780632a3654a4146104a85780632de94807146104c757610313565b80631e4e009114610418578063217b22701461043957610313565b806301ffc9a71461036e57806316e023b3146103a257806318160ddd146103ce5780631d26fce6146103ec57610313565b3661031357345f036102e1576040517fe5099ee30000000000000000000000000000000000000000000000000000000081526004016102d89060208082526004908201525f604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f36606082826004811015610356576040517fe5099ee30000000000000000000000000000000000000000000000000000000081526004016102d89291906131d7565b50506103628383610861565b80519350602001915050f35b348015610379575f5ffd5b5061038d610388366004613223565b6109f6565b60405190151581526020015b60405180910390f35b3480156103ad575f5ffd5b506103c16103bc366004613262565b610a0f565b60405161039991906132ce565b3480156103d9575f5ffd5b506002545b604051908152602001610399565b3480156103f7575f5ffd5b5061040b6104063660046133e9565b610a22565b604051610399919061344e565b348015610423575f5ffd5b50610437610432366004613262565b610b22565b005b348015610444575f5ffd5b506104586104533660046134cf565b610b3b565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610399565b348015610488575f5ffd5b506103de6104973660046134cf565b5f9081526006602052604090205490565b3480156104b3575f5ffd5b5061038d6104c236600461350e565b610b9a565b3480156104d2575f5ffd5b506104e66104e1366004613536565b610ba5565b604051610399919061354f565b3480156104fe575f5ffd5b5061043761050d366004613591565b610bd5565b34801561051d575f5ffd5b5061043761052c366004613591565b610bf6565b34801561053c575f5ffd5b5060095461038d9060ff1681565b348015610555575f5ffd5b506105696105643660046134cf565b610cd2565b60405161039991906135bb565b348015610581575f5ffd5b506104376105903660046136a9565b610cf3565b3480156105a0575f5ffd5b506103c16105af3660046134cf565b610d6c565b3480156105bf575f5ffd5b5061040b6105ce36600461371d565b610d77565b3480156105de575f5ffd5b506103de6105ed366004613536565b610ebb565b3480156105fd575f5ffd5b50610437610ee8565b348015610611575f5ffd5b50610437610efb565b348015610625575f5ffd5b506104376106343660046138d1565b610f93565b6104376106473660046139a7565b611098565b348015610657575f5ffd5b506104376106663660046139e1565b6110e2565b348015610676575f5ffd5b505f5473ffffffffffffffffffffffffffffffffffffffff16610458565b34801561069f575f5ffd5b506104586106ae366004613262565b611332565b3480156106be575f5ffd5b5061038d6106cd366004613591565b611349565b6104376106e0366004613a34565b611354565b3480156106f0575f5ffd5b506103de5f81565b348015610703575f5ffd5b506105696107123660046134cf565b61139e565b348015610722575f5ffd5b506104e6610731366004613536565b6113b7565b348015610741575f5ffd5b50610437610750366004613a8f565b6113e7565b348015610760575f5ffd5b5061043761076f366004613af3565b61141d565b34801561077f575f5ffd5b506103de61078e3660046134cf565b611516565b34801561079e575f5ffd5b506103de7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b3480156107d1575f5ffd5b506104376107e0366004613591565b61152c565b3480156107f0575f5ffd5b506104376107ff366004613b77565b6115cf565b34801561080f575f5ffd5b5061043761081e366004613a8f565b6115e2565b34801561082e575f5ffd5b5061040b61083d366004613bad565b611765565b34801561084d575f5ffd5b5061043761085c366004613536565b61180f565b60605f6108905f357fffffffff00000000000000000000000000000000000000000000000000000000166118c6565b5090507fffffffff000000000000000000000000000000000000000000000000000000005f351673ffffffffffffffffffffffffffffffffffffffff8216610929576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000090911660048201526024016102d8565b505f5f8273ffffffffffffffffffffffffffffffffffffffff16348787333460405160200161095b9493929190613bdf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261099391613c22565b5f6040518083038185875af1925050503d805f81146109cd576040519150601f19603f3d011682016040523d82523d5f602084013e6109d2565b606091505b509150915081156109e75792506109f0915050565b80518060208301fd5b92915050565b5f610a0082611984565b806109f057506109f082611a67565b6060610a1b8383611acb565b9392505050565b60608151835114610a5f576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825167ffffffffffffffff811115610a7957610a796132e0565b604051908082528060200260200182016040528015610aac57816020015b6060815260200190600190039081610a975790505b5090505f5b8351811015610b1b57610af6848281518110610acf57610acf613c38565b6020026020010151848381518110610ae957610ae9613c38565b6020026020010151611acb565b828281518110610b0857610b08613c38565b6020908102919091010152600101610ab1565b5092915050565b5f610b2c81611b9e565b610b368383611ba8565b505050565b5f8181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff168281610b1b576040517fae8f9a360000000000000000000000000000000000000000000000000000000081526004016102d891815260200190565b5f610a1b8383611c26565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526008602052604090206060906109f090611c7b565b5f82815260066020526040902054610bec81611b9e565b610b368383611c87565b73ffffffffffffffffffffffffffffffffffffffff81163314610c45576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81158015610c6957505f5473ffffffffffffffffffffffffffffffffffffffff1633145b1533839091610cc2576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102d8565b5050610cce8233611d1e565b5050565b6060610cdd82611db5565b5f8281526005602052604090206109f090611c7b565b610cfd3384611c26565b83339091610d56576040517f1294d2a9000000000000000000000000000000000000000000000000000000008152600481019290925273ffffffffffffffffffffffffffffffffffffffff1660248201526044016102d8565b5050610d658585858585611e16565b5050505050565b60606109f0826120bf565b60608167ffffffffffffffff811115610d9257610d926132e0565b604051908082528060200260200182016040528015610dc557816020015b6060815260200190600190039081610db05790505b5090505f5b82811015610b1b575f8030868685818110610de757610de7613c38565b9050602002810190610df99190613c65565b604051610e07929190613ccd565b5f60405180830381855af49150503d805f8114610e3f576040519150601f19603f3d011682016040523d82523d5f602084013e610e44565b606091505b509150915081610e9357805115610e5e5780518082602001fd5b6040517f234eb819000000000000000000000000000000000000000000000000000000008152600481018490526024016102d8565b80848481518110610ea657610ea6613c38565b60209081029190910101525050600101610dca565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526004602052604081206109f09061215e565b610ef0612167565b610ef95f6121e7565b565b610f03612167565b60095460ff16610f3f576040517f4d8af03d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040515f907f41f386d449eec03c1c3b75bbba9c18df70aa19779ff47f68eab4b6a66fb399d4908290a2565b8451845181148015610fa55750835181145b8015610fb15750825181145b8015610fbd5750815181145b610ff3576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8181101561108f5761108787828151811061101257611012613c38565b602002602001015187838151811061102c5761102c613c38565b602002602001015187848151811061104657611046613c38565b602002602001015187858151811061106057611060613c38565b602002602001015187868151811061107a5761107a613c38565b6020026020010151610cf3565b600101610ff5565b50505050505050565b6110a0612167565b34156110d8576040517ff36ba73700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cce828261221a565b5f6110ec83610b3b565b905080833373ffffffffffffffffffffffffffffffffffffffff83168114611169576040517f5b271ea200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152602481019290925290911660448201526064016102d8565b50505073ffffffffffffffffffffffffffffffffffffffff84166111b9576040517f9577b8b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361121e576040517f89fdad6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f838152600560205260408120611235908661227d565b905084848261128e576040517fa7626b6800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102d8565b5050838273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc236671215866040516112ee91906132ce565b60405180910390a45f338560018660405160200161130f9493929190613cdc565b604051602081830303815290604052905061132a868261229e565b505050505050565b5f828152600760205260408120610a1b90836122c9565b5f610a1b83836122d4565b61135c612167565b3415611394576040517ff36ba73700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cce82826122eb565b5f8181526007602052604090206060906109f090611c7b565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526004602052604090206060906109f090611c7b565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661141181611b9e565b610d65858585856123af565b611425612167565b81518351148015611437575080518251145b61146d576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f036114a7576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8351811015611510576115088482815181106114c7576114c7613c38565b60200260200101518483815181106114e1576114e1613c38565b60200260200101518484815181106114fb576114fb613c38565b60200260200101516123f7565b6001016114a9565b50505050565b5f8181526007602052604081206109f09061215e565b5f8281526006602052604090205461154381611b9e565b8215801561156a57505f5473ffffffffffffffffffffffffffffffffffffffff8381169116145b15828490916115c3576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102d8565b5050610b368383611d1e565b6115d7612167565b610b368383836123f7565b5f6115ec84610b3b565b90503373ffffffffffffffffffffffffffffffffffffffff8216146116885733818573ffffffffffffffffffffffffffffffffffffffff88168314611684576040517f760b5acd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015292909116602483015260448201526064016102d8565b5050505b73ffffffffffffffffffffffffffffffffffffffff85166116d5576040517f9577b8b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361173a576040517f89fdad6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117478582868686612485565b8215610d65575f81855f8560405160200161130f9493929190613cdc565b6060815167ffffffffffffffff811115611781576117816132e0565b6040519080825280602002602001820160405280156117b457816020015b606081526020019060019003908161179f5790505b5090505f5b8251811015611809576117e48382815181106117d7576117d7613c38565b60200260200101516120bf565b8282815181106117f6576117f6613c38565b60209081029190910101526001016117b9565b50919050565b611817612167565b73ffffffffffffffffffffffffffffffffffffffff81166118ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102d8565b6118c3816121e7565b50565b5f80806119157fcee78b4094da86011096000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008616612567565b90505f611921826120bf565b905080516014148061193257508051155b819061196b576040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016102d891906132ce565b5061197581613d22565b60601c95600195509350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480611a1657507fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000145b806109f057507fffffffff0000000000000000000000000000000000000000000000000000000082167f90832245000000000000000000000000000000000000000000000000000000001492915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f3a271706000000000000000000000000000000000000000000000000000000001480611abc5750611abc826125ea565b806109f057506109f08261263f565b606060015f8484604051602001611aec929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020015f208054611b1a90613d8e565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4690613d8e565b8015611b915780601f10611b6857610100808354040283529160200191611b91565b820191905f5260205f20905b815481529060010190602001808311611b7457829003601f168201915b5050505050905092915050565b6118c3813361269a565b81611bdf576040517fd0dc904b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260066020526040808220805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b5f611c3082610b3b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610a1b57505f828152600560205260409020610a1b90846126fc565b60605f610a1b8361272a565b5f828152600760205260408120611c9e908361227d565b90508015610b365773ffffffffffffffffffffffffffffffffffffffff82165f908152600860205260409020611cd49084612782565b50604051339073ffffffffffffffffffffffffffffffffffffffff84169085907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d905f90a4505050565b5f828152600760205260408120611d35908361278d565b90508015610b365773ffffffffffffffffffffffffffffffffffffffff82165f908152600860205260409020611d6b90846127ae565b50604051339073ffffffffffffffffffffffffffffffffffffffff84169085907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b905f90a4505050565b5f8181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615158190610cce576040517fae8f9a360000000000000000000000000000000000000000000000000000000081526004016102d891815260200190565b5f611e2084610b3b565b905080848773ffffffffffffffffffffffffffffffffffffffff81811690841614611ea0576040517f5b271ea200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152602481019290925290911660448201526064016102d8565b50505073ffffffffffffffffffffffffffffffffffffffff8516611ef0576040517f24ecef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611efa85610b3b565b905084828273ffffffffffffffffffffffffffffffffffffffff80821690831614611f78576040517f5a9c31d3000000000000000000000000000000000000000000000000000000008152600481019390935273ffffffffffffffffffffffffffffffffffffffff91821660248401521660448201526064016102d8565b505050611f8587866127b9565b73ffffffffffffffffffffffffffffffffffffffff87165f908152600460205260409020611fb390866127ae565b5073ffffffffffffffffffffffffffffffffffffffff86165f908152600460205260409020611fe29086612782565b505f858152600360205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518792918a16907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf9061206d9033908a908a90613dd9565b60405180910390a45f338888888760405160200161208f959493929190613e18565b60405160208183030381529060405290506120aa888261280c565b6120b5878683612837565b5050505050505050565b5f8181526001602052604090208054606091906120db90613d8e565b80601f016020809104026020016040519081016040528092919081815260200182805461210790613d8e565b80156121525780601f1061212957610100808354040283529160200191612152565b820191905f5260205f20905b81548152906001019060200180831161213557829003601f168201915b50505050509050919050565b5f6109f0825490565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610ef9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102d8565b6122117f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a65f611ba8565b6118c3816129f0565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e738201612273576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cce8282612aa1565b5f610a1b8373ffffffffffffffffffffffffffffffffffffffff8416612c00565b610cce827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f0097083612c4c565b5f610a1b8383612ce5565b5f828152600760205260408120610a1b90836126fc565b8051825114612326576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81515f03612360576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610b36576123a783828151811061238057612380613c38565b602002602001015183838151811061239a5761239a613c38565b602002602001015161221a565b600101612362565b60095460ff166123eb576040517f4d8af03d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61151084848484612d0b565b8060015f8585604051602001612417929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020015f2090816124469190613ec8565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb8360405161247891906132ce565b60405180910390a3505050565b5f83815260056020526040812061249c908761278d565b90508584826124f5576040517f4aa31a8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102d8565b5050838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c8686604051612557929190613fdf565b60405180910390a4505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201525f602a82018190527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008416602c830152918291016040516020818303038152906040529050806125e290613ff9565b949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa918fa6b0000000000000000000000000000000000000000000000000000000014806109f057506109f082612f1e565b5f8061266a7f01ffc9a7000000000000000000000000000000000000000000000000000000006118c6565b50905073ffffffffffffffffffffffffffffffffffffffff811661269057505f92915050565b610a1b8184612fb4565b6126a482826122d4565b81839091611510576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016102d8565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515610a1b565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561215257602002820191905f5260205f20905b8154815260200190600101908083116127635750505050509050919050565b5f610a1b8383612c00565b5f610a1b8373ffffffffffffffffffffffffffffffffffffffff8416613080565b5f610a1b8383613080565b5f818152600560205260408120906127d08261215e565b90505f5f5b8281101561132a576127e7845f6122c9565b91506128048287875f60405180602001604052805f815250612485565b6001016127d5565b610cce827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab0083612c4c565b612861837f6bb56a1400000000000000000000000000000000000000000000000000000000612fb4565b1561293a576040517f6bb56a1400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690636bb56a14906128da907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d90859060040161403b565b5f604051808303815f875af11580156128f5573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115109190810190614053565b81610b365773ffffffffffffffffffffffffffffffffffffffff83163b156129a6576040517f4349776d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016102d8565b6040517f0317313700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016102d8565b5f5473ffffffffffffffffffffffffffffffffffffffff16612a1182613163565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600860205260408120612a3e90611c7b565b90505f5b8151811015611510575f828281518110612a5e57612a5e613c38565b60200260200101519050612a728185611d1e565b73ffffffffffffffffffffffffffffffffffffffff851615612a9857612a988186611c87565b50600101612a42565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201612afa576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201612b53576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201612bac576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f828152600160205260409020612bc38282613ec8565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051612bf491906132ce565b60405180910390a25050565b5f818152600183016020526040812054612c4557508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556109f0565b505f6109f0565b612c8c73ffffffffffffffffffffffffffffffffffffffff84167f6bb56a1400000000000000000000000000000000000000000000000000000000612fb4565b15610b36576040517f6bb56a1400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690636bb56a14906128da908590859060040161403b565b5f825f018281548110612cfa57612cfa613c38565b905f5260205f200154905092915050565b73ffffffffffffffffffffffffffffffffffffffff8416612d58576040517f24ecef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260036020526040902054839073ffffffffffffffffffffffffffffffffffffffff1615612db8576040517f34c7b5110000000000000000000000000000000000000000000000000000000081526004016102d891815260200190565b505f83815260036020526040902054839073ffffffffffffffffffffffffffffffffffffffff1615612e19576040517f34c7b5110000000000000000000000000000000000000000000000000000000081526004016102d891815260200190565b5060025f8154612e28906140f5565b9091555073ffffffffffffffffffffffffffffffffffffffff84165f908152600460205260409020612e5a9084612782565b505f8381526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf90612ee090339088908890613dd9565b60405180910390a45f335f868685604051602001612f02959493929190613e18565b6040516020818303038152906040529050610d65858483612837565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f629aa6940000000000000000000000000000000000000000000000000000000014806109f057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146109f0565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017815282515f9392849283928392918391908a617530fa92503d91505f51905082801561306a575060208210155b801561307557505f81115b979650505050505050565b5f818152600183016020526040812054801561315a575f6130a260018361412c565b85549091505f906130b59060019061412c565b9050818114613114575f865f0182815481106130d3576130d3613c38565b905f5260205f200154905080875f0184815481106130f3576130f3613c38565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806131255761312561413f565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506109f0565b5f9150506109f0565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60208152816020820152818360408301375f818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b5f60208284031215613233575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610a1b575f5ffd5b5f5f60408385031215613273575f5ffd5b50508035926020909101359150565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610a1b6020830184613282565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613354576133546132e0565b604052919050565b5f67ffffffffffffffff821115613375576133756132e0565b5060051b60200190565b5f82601f83011261338e575f5ffd5b81356133a161339c8261335c565b61330d565b8082825260208201915060208360051b8601019250858311156133c2575f5ffd5b602085015b838110156133df5780358352602092830192016133c7565b5095945050505050565b5f5f604083850312156133fa575f5ffd5b823567ffffffffffffffff811115613410575f5ffd5b61341c8582860161337f565b925050602083013567ffffffffffffffff811115613438575f5ffd5b6134448582860161337f565b9150509250929050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156134c3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526134ae858351613282565b94506020938401939190910190600101613474565b50929695505050505050565b5f602082840312156134df575f5ffd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114613509575f5ffd5b919050565b5f5f6040838503121561351f575f5ffd5b613528836134e6565b946020939093013593505050565b5f60208284031215613546575f5ffd5b610a1b826134e6565b602080825282518282018190525f918401906040840190835b81811015613586578351835260209384019390920191600101613568565b509095945050505050565b5f5f604083850312156135a2575f5ffd5b823591506135b2602084016134e6565b90509250929050565b602080825282518282018190525f918401906040840190835b8181101561358657835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016135d4565b80358015158114613509575f5ffd5b5f67ffffffffffffffff821115613630576136306132e0565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f83011261366b575f5ffd5b813561367961339c82613617565b81815284602083860101111561368d575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a086880312156136bd575f5ffd5b6136c6866134e6565b94506136d4602087016134e6565b9350604086013592506136e960608701613608565b9150608086013567ffffffffffffffff811115613704575f5ffd5b6137108882890161365c565b9150509295509295909350565b5f5f6020838503121561372e575f5ffd5b823567ffffffffffffffff811115613744575f5ffd5b8301601f81018513613754575f5ffd5b803567ffffffffffffffff81111561376a575f5ffd5b8560208260051b840101111561377e575f5ffd5b6020919091019590945092505050565b5f82601f83011261379d575f5ffd5b81356137ab61339c8261335c565b8082825260208201915060208360051b8601019250858311156137cc575f5ffd5b602085015b838110156133df576137e2816134e6565b8352602092830192016137d1565b5f82601f8301126137ff575f5ffd5b813561380d61339c8261335c565b8082825260208201915060208360051b86010192508583111561382e575f5ffd5b602085015b838110156133df5761384481613608565b835260209283019201613833565b5f82601f830112613861575f5ffd5b813561386f61339c8261335c565b8082825260208201915060208360051b860101925085831115613890575f5ffd5b602085015b838110156133df57803567ffffffffffffffff8111156138b3575f5ffd5b6138c2886020838a010161365c565b84525060209283019201613895565b5f5f5f5f5f60a086880312156138e5575f5ffd5b853567ffffffffffffffff8111156138fb575f5ffd5b6139078882890161378e565b955050602086013567ffffffffffffffff811115613923575f5ffd5b61392f8882890161378e565b945050604086013567ffffffffffffffff81111561394b575f5ffd5b6139578882890161337f565b935050606086013567ffffffffffffffff811115613973575f5ffd5b61397f888289016137f0565b925050608086013567ffffffffffffffff81111561399b575f5ffd5b61371088828901613852565b5f5f604083850312156139b8575f5ffd5b82359150602083013567ffffffffffffffff8111156139d5575f5ffd5b6134448582860161365c565b5f5f5f606084860312156139f3575f5ffd5b6139fc846134e6565b925060208401359150604084013567ffffffffffffffff811115613a1e575f5ffd5b613a2a8682870161365c565b9150509250925092565b5f5f60408385031215613a45575f5ffd5b823567ffffffffffffffff811115613a5b575f5ffd5b613a678582860161337f565b925050602083013567ffffffffffffffff811115613a83575f5ffd5b61344485828601613852565b5f5f5f5f60808587031215613aa2575f5ffd5b613aab856134e6565b935060208501359250613ac060408601613608565b9150606085013567ffffffffffffffff811115613adb575f5ffd5b613ae78782880161365c565b91505092959194509250565b5f5f5f60608486031215613b05575f5ffd5b833567ffffffffffffffff811115613b1b575f5ffd5b613b278682870161337f565b935050602084013567ffffffffffffffff811115613b43575f5ffd5b613b4f8682870161337f565b925050604084013567ffffffffffffffff811115613b6b575f5ffd5b613a2a86828701613852565b5f5f5f60608486031215613b89575f5ffd5b8335925060208401359150604084013567ffffffffffffffff811115613a1e575f5ffd5b5f60208284031215613bbd575f5ffd5b813567ffffffffffffffff811115613bd3575f5ffd5b6125e28482850161337f565b8385823760609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016919092019081526014810191909152603401919050565b5f82518060208501845e5f920191825250919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c98575f5ffd5b83018035915067ffffffffffffffff821115613cb2575f5ffd5b602001915036819003821315613cc6575f5ffd5b9250929050565b818382375f9101908152919050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201528215156040820152608060608201525f613d186080830184613282565b9695505050505050565b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015613d87577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b5050919050565b600181811c90821680613da257607f821691505b602082108103611809577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff841681528215156020820152606060408201525f613e0f6060830184613282565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015273ffffffffffffffffffffffffffffffffffffffff8416604082015282606082015260a060808201525f61307560a0830184613282565b601f821115610b3657805f5260205f20601f840160051c81016020851015613ea95750805b601f840160051c820191505b81811015610d65575f8155600101613eb5565b815167ffffffffffffffff811115613ee257613ee26132e0565b613ef681613ef08454613d8e565b84613e84565b6020601f821160018114613f47575f8315613f115750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610d65565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015613f945787850151825560209485019460019092019101613f74565b5084821015613fd057868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b8215158152604060208201525f6125e26040830184613282565b80516020808301519190811015611809577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b828152604060208201525f6125e26040830184613282565b5f60208284031215614063575f5ffd5b815167ffffffffffffffff811115614079575f5ffd5b8201601f81018413614089575f5ffd5b805161409761339c82613617565b8181528560208385010111156140ab575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614125576141256140c8565b5060010190565b818103818111156109f0576109f06140c8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea26469706673582212203758e2efd5ee1265dcd1f3f438a8d6a2b5f387d5a6819184aab686d29fbbc4bb64736f6c634300081c0033",
  "linkReferences": {},
  "deployedLinkReferences": {},
  "immutableReferences": {},
  "inputSourceName": "project/contracts/presets/LSP8Mintable.sol",
  "buildInfoId": "solc-0_8_28-51761251365f530b69e394f3aa78b9f98e3e9d6a"
}