abstract contract CulturalContract is
    ICulturalContract,
    ICulturalContractMetadata,
    ERC165,
    ReentrancyGuard,
    Ownable
{
    /**
     * @dev See {ICulturalContract-culturalRNA}.
     */
    function culturalRNA(uint256)
        external
        pure
        override
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        return (0, 0, 0);
    }

    /**
     * @dev See {ICulturalContract-remix}.
     */
    function remix(uint256, string memory) external virtual override {}

    /**
     * @dev See {IERC165-supportsInterface}.
     *
     * Note: the ERC-165 identifier for ICulturalContract interface is 0xf9ae973e
     */
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override(ERC165)
        returns (bool)
    {
        return
            interfaceId == type(ICulturalContract).interfaceId ||
            super.supportsInterface(interfaceId);
    }
}
function supportsInterface(bytes4 interfaceId)
    public
    view
    virtual
    override(ERC165)
    returns (bool)
{
    return
        interfaceId == type(ICulturalContract).interfaceId ||
        super.supportsInterface(interfaceId);
}

/**
 * @dev See {IERC165-supportsInterface}.
 *
 * Note: the ERC-165 identifier for ICulturalContract interface is 0xf9ae973e
 */