```\nfunction lastPublicSaleBatchMint(uint256 tokenCount)\n    external\n    payable\n    returns (bool)\n{\n    if ((block.timestamp >= defaultSaleStartTime + DEFAULT_TEAMMINT_SALE)) {\n        if (tokenCount == 0) revert InvalidTokenCountZero();\n\n        if (\n            lastPublicSale[msg.sender] + tokenCount >\n            LIMIT_IN_PUBLIC_SALE_PER_WALLET\n        ) revert MaximumMintLimitReachedByUser();\n\n        if ((dutchAuctionLastPrice * tokenCount) != msg.value)\n            revert InvalidBuyNFTPrice(\n                (dutchAuctionLastPrice * tokenCount),\n                msg.value\n            );\n\n        lastPublicSale[msg.sender] =\n            lastPublicSale[msg.sender] +\n            tokenCount;\n\n        uint256[] memory newIDs = new uint256[](tokenCount);\n        uint256[] memory newAmounts = new uint256[](tokenCount);\n\n        if (_tokenIds + tokenCount > DEFAULT_MAX_MINTING_SUPPLY)\n            revert MaximumMintSupplyReached();\n\n        for (uint256 i = 0; i < tokenCount; i++) {\n            _tokenIds++;\n\n            newIDs[i] = _tokenIds;\n            newAmounts[i] = 1;\n        }\n\n        emit NewNFTBatchMintedOnLastPublicSale(\n            newIDs,\n            msg.sender,\n            msg.value\n        );\n\n        _mintBatch(msg.sender, newIDs, newAmounts, "");\n\n        return true;\n    } else {\n        revert UnAuthorizedRequest();\n    }\n}\n```\n