The Wine development release 3.4 is now available.

What's new in this release (see below for details):
  - More Vulkan support, including integration with the X11 driver.
  - Better handling of privileged instructions on x86-64.
  - Hex edit dialog improvements in RegEdit.
  - Assortment of patches merged from wine-staging.
  - Various bug fixes.

The source is available from the following locations:

  https://dl.winehq.org/wine/source/3.x/wine-3.4.tar.xz
  http://mirrors.ibiblio.org/wine/source/3.x/wine-3.4.tar.xz

Binary packages for various distributions will be available from:

  https://www.winehq.org/download

You will find documentation on https://www.winehq.org/documentation

You can also get the current source directly from the git
repository. Check https://www.winehq.org/git for details.

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

----------------------------------------------------------------

Bugs fixed in 3.4 (total 45):

  10744  Robot Arena main menu is extremely slow
  24436  the ping command with a wine cmd does nothing
  25138  Black and White 2 demo crashes on startup (ID3DXEffect interface changes between d3dx9_xx versions)
  29774  Texture filtering doesn't work in nGlide
  32104  KwMusic: crashes during installing
  32699  Add StartupWMClass to .desktop files.
  35910  TuneUp Utilities 2014 installer crashes (API signature mismatch for NtAllocateUuids)
  37809  C runtime dlls can't link with uclibc (bessel functions missing)
  38352  Multiple games need d3dx9_36.dll.D3DXComputeNormalMap (Foresight, Gamestudio Venice, GOG King Arthur Collection)
  38626  Word 2010 image text mode wrapping menu hides after a few seconds
  38919  HyperStudio 5 (.NET 4.0 app) hangs at splash screen ('PngDecoder_Frame_GetMetadataQueryReader' is a stub)
  39209  Smart Diary Suite 4 crashes when updating options ('CLSID_AudioCompressorCategory', '{33D9A761-90C8-11d0-BD43-00A0C911CE86}' must be treated as special category)
  40539  Fail to start HPDiagnosticCoreUI.exe
  40943  System Shock demo (DX 11): loads to a white screen then switches to a black screen
  41096  ResEdit Resources treeview has rendered wrongly positioned first branch
  41911  Multiple Microsoft applications need kernel32.FindNLSStringEx (Studio One 3, Microsoft Office 2016, PowerShell 6)
  42768  Ys: The Ark of Napishtim (Ys 6) silently crashes playing in-game videos
  43357  Stars in Shadow crashes on startup
  43656  64-bit World of Warcraft client reports 'Game Initialization Failed!' or crashes on startup with stack overflow due to improper mapping of exception code
  43828  The Witcher 3: some monsters have distorted surfaces sticking out
  44053  MobilePASS application quits with an error, needs unimplemented function bcrypt.dll.BCryptImportKey
  44071  SPFLite Editor crashes on nullpointer
  44482  x64dbg crashes during exit on unimplemented function msvcp120.dll.??0_Runtime_object@details@Concurrency@@QEAA@XZ
  44499  BattlEye 'BEDaisy' kernel service crashes on unimplemented function ntoskrnl.exe.PsSetCreateProcessNotifyRoutineEx
  44515  assert from wxpython
  44550  ReactOS ftp.exe: enters endless loop on CTRL-Z
  44565  Forgotten Realms: Demon Stone has rendering issue
  44570  explorer.exe crashes when opening relative paths
  44616  Multiple Blizzard games need 'ntdll.NtCreateThreadEx' implementation (Diablo III v2. 6. 1. 49286+, World of Warcraft, Overwatch)
  44617  Multiple Blizzard games need Win7+ 'user32.GetWindowDisplayAffinity' and 'user32.SetWindowDisplayAffinity' stubs (Diablo III v2. 6. 1. 49286+)
  44619  Multiple 64-bit applications need various Win7+ user-mode scheduling (UMS) API stubs (x64dbg, ACDSee Pro 9.0)
  44626  AvP Classic 2000 (Steam) launcher crashes when attempting to start the game
  44641  Sentinel HASP 'hardlock.sys' kernel driver crashes on unimplemented function ntoskrnl.exe.RtlCreateRegistryKey
  44643  akai midimix editor application crashes on start
  44647  Smart Diary Suite 4 just segfaults
  44654  EDIdEv Framework EDI Runtime installer fails due to 'sfc.SfcGetNextProtectedFile' not setting last-error code
  44657  Wine-3.3 no longer compiles when configured without kerberos (--without-krb5)
  44659  TeamViewer crashes on start
  44668  Intel Asteroids DirectX 12 Sample requires NInput.dll
  44676  Two Worlds crashes (hangs) when saving the game (anti-aliasing enabled)
  44701  xinput console spam with steam
  44707  Sigcheck v2.60 crashes on unimplemented function CRYPT32.dll.CryptSIPRetrieveSubjectGuidForCatalogFile
  44717  Bermuda (Steam, Indie game) crashes due to 'msscript.ocx' 'ScriptControl_put_AllowUI' being a stub
  44736  incorrect module loading order
  44749  Sentinel HASP 'hardlock.sys' kernel driver expects ntdll.RtlCheckRegistryKey to return STATUS_SUCCESS on empty path

----------------------------------------------------------------

Changes since 3.3:

Akihiro Sagawa (3):
      user32: Add more ex-style trace messages.
      ucrtbase: Add a test that shows asctime() uses space-padding for day of month.
      ucrtbase: Asctime() uses space-padding for day of month as seen in C89.

Alex Henrie (2):
      msvcrt: Compile but show an error if Bessel functions aren't available.
      imm32: Fix capitalization of ImmDisableLegacyIME in its comment.

Alexander Morozov (1):
      ntoskrnl.exe: Add stub for ObReferenceObjectByPointer.

Alexandre Julliard (11):
      makefiles: Fix typo in documentation rules generation.
      makefiles: Generate the crosstest disabled rule from makedep.
      makefiles: Generate the winetest resource list from makedep.
      makefiles: Generate the tools dependencies from makedep.
      makefiles: Generate dummy dependencies for header files.
      makefiles: Treat all directories the same way in configure.
      ntdll: Handle LOAD_LIBRARY_AS_IMAGE_RESOURCE modules when loading resources.
      configure; Also disable gssapi when krb5 is disabled.
      wininet/tests: Update the winehq.org certificate data.
      ntdll: Avoid pushl %esp instruction in RtlUnwind prolog.
      ntdll: Fix extra comma in x86_64 relay traces.

Alistair Leslie-Hughes (17):
      include: Add some missing NTSTATUS defines.
      include: Add UMS typedef's.
      kernel32: Add CreateUmsCompletionList stub.
      kernel32: Add CreateUmsThreadContext stub.
      kernel32: Add DeleteUmsCompletionList stub.
      kernel32: Add DeleteUmsThreadContext stub.
      kernel32: Add DequeueUmsCompletionListItems stub.
      kernel32: Add EnterUmsSchedulingMode stub.
      kernel32: Add ExecuteUmsThread stub.
      kernel32: Add GetCurrentUmsThread stub.
      kernel32: Add GetNextUmsListItem stub.
      kernel32: Add GetUmsCompletionListEvent stub.
      kernel32: Add QueryUmsThreadInformation stub.
      kernel32: Add SetUmsThreadInformation stub.
      kernel32: Add UmsThreadYield stub.
      crypt32: Add CryptSIPRetrieveSubjectGuidForCatalogFile stub.
      msscript: Implement IScriptControl get/set AllowUI.

Andrew Eikum (1):
      winepulse: Wake all threads when operations are completed.

Andrew Wesie (4):
      ntdll: Implement NtCreateThreadEx.
      ntdll/tests: Test exception codes on x86-64.
      ntdll: Handle interrupt 0x2c on x86-64.
      ntdll: Handle icebp on x86-64.

Andrey Gusev (23):
      ninput: Add stub dll.
      api-ms-win-core-largeinteger-l1-1-0: Add dll.
      api-ms-win-gdi-dpiinfo-l1-1-0: Add dll.
      api-ms-win-rtcore-ntuser-window-l1-1-0: Add dll.
      api-ms-win-rtcore-ntuser-winevent-l1-1-0: Add dll.
      api-ms-win-rtcore-ntuser-wmpointer-l1-1-0: Add dll.
      api-ms-win-rtcore-ntuser-wmpointer-l1-1-3: Add dll.
      ext-ms-win-ntuser-draw-l1-1-0: Add dll.
      ext-ms-win-ntuser-mouse-l1-1-0: Add dll.
      ext-ms-win-oleacc-l1-1-0: Add dll.
      ext-ms-win-rtcore-gdi-devcaps-l1-1-0: Add dll.
      api-ms-win-rtcore-ntuser-private-l1-1-4: Add dll.
      ext-ms-win-rtcore-ntuser-syscolors-l1-1-0: Add dll.
      ext-ms-win-rtcore-ntuser-cursor-l1-1-0: Add dll.
      ext-ms-win-ntuser-gui-l1-3-0: Add dll.
      ext-ms-win-ntuser-keyboard-l1-3-0: Add dll.
      ext-ms-win-ntuser-misc-l1-5-1: Add dll.
      ext-ms-win-dwmapi-ext-l1-1-0: Add dll.
      ext-ms-win-ntuser-private-l1-3-1: Add dll.
      ext-ms-win-ntuser-window-l1-1-4: Add dll.
      ext-ms-win-rtcore-ntuser-dpi-l1-2-0: Add dll.
      ext-ms-win-rtcore-ntuser-rawinput-l1-1-0: Add dll.
      dmime: Fix misplaced parenthesis.

Anton Romanov (5):
      wmp: Add semistub IWMPSettings invokeURLs, enableErrorDialogs and autoStart properties implementation.
      wmp: Add IWMPMedia stub.
      wmp: Add IWMPNetwork stub.
      wmp: Implement IWMPPlayer_get_URL and IWMPMedia_get_sourceURL.
      wmp: Handle allocation failure in IWMPMedia_get_sourceURL.

Austin English (1):
      ntoskrnl.exe: Add PsSetCreateProcessNotifyRoutineEx stub.

Christian Costa (2):
      wined3d: Recognize GTX 560M card with NVIDIA driver.
      ntoskrnl.exe: Fix IoReleaseCancelSpinLock argument.

David Adam (1):
      d3dx9: Improve vertices computation in D3DXCreatePolygon().

Dmitry Timoshkov (9):
      taskschd: Implement IExecAction::put_WorkingDirectory.
      taskschd: Implement IExecAction::get_WorkingDirectory.
      taskschd: Implement IExecAction::put_Arguments.
      taskschd: Implement IExecAction::get_Arguments.
      taskschd/tests: Add more tests for actions.
      windowscodecs: Fix stride calculation in JPEG decoder.
      mstask: Make each source file self-contained.
      mstask: Reimplement SetTargetComputer/GetTargetComputer using ITaskService methods.
      mstask: Reimplement ITask constructor using ITaskFolder methods.

Fabian Maurer (1):
      ole32: Better logging for apartment_getclassobject, on failure log dll path.

François Gouget (4):
      kernelbase/tests: Fix a couple of typos in skip messages.
      wmp/tests: Add a trailing '\n' to an ok() call.
      winevulkan: Fix some typos in comments.
      wbemprox: Tweak a comment.

Gijs Vermeulen (2):
      msscript: Implement IScriptControl_[get|put]_UseSafeSubset.
      msscript: Implement IScriptControl_[get|put]_State.

Hans Leidekker (2):
      kernel32: Return a non-empty username from GetNamedPipeHandleState.
      kernel32: Don't return an error from TransactNamedPipe if an overlapped pointer is passed.

Henri Verbeet (49):
      wined3d: Explicitly calculate the sub-resource level in texture2d_create_dc().
      wined3d: Explicitly calculate the sub-resource level in wined3d_texture_update_overlay().
      wined3d: Pass a texture to surface_translate_drawable_coords().
      wined3d: Pass a texture and sub-resource index to wined3d_surface_upload_data().
      usp10: Use heap_calloc() in ScriptPlace().
      wined3d: Store the EXT_fbo "renderbuffers" list in the texture instead of the surface.
      wined3d: Merge surface_load_location() into texture2d_load_location().
      wined3d: Pass a texture and sub-resource index to surface_load_sysmem().
      wined3d: Pass a texture and sub-resource index to surface_load_drawable().
      usp10: Use heap_calloc() in ScriptShape().
      wined3d: Pass a texture and sub-resource index to surface_load_renderbuffer().
      wined3d: Pass a texture and sub-resource index to surface_load_texture().
      wined3d: Pass boxes instead of rectangles to wined3d_surface_blt().
      wined3d: Pass a texture and sub-resource index to surface_depth_blt_fbo().
      usp10: Use heap_calloc() in ScriptShapeOpenType().
      usp10: Use heap_calloc() in ScriptStringAnalyse().
      wined3d: Pass a texture and sub-resource index to surface_blt_fbo().
      wined3d: Pass a texture and sub-resource index to surface_download_data().
      wined3d: Pass a texture and sub-resource index to surface_upload_from_surface().
      wined3d: Pass a texture and sub-resource index to read_from_framebuffer().
      wined3d: Pass a texture and sub-resource index to surface_load_fb_texture().
      wined3d: Pass a texture and sub-resource index to fb_copy_to_texture_direct().
      wined3d: Pass a texture and sub-resource index to fb_copy_to_texture_hwstretch().
      wined3d: Pass a texture and sub-resource index to surface_blt_special().
      usp10: Use heap_calloc() in requires_fallback().
      wined3d: Recognise AMD RC410 and RV380.
      wined3d: Pass a texture and sub-resource index to context_restore().
      wined3d: Pass the depth/stencil view as wined3d_rendertarget_info structure to context_apply_fbo_state().
      wined3d: Pass a texture and sub-resource index to context_apply_fbo_state_blit().
      usp10: Use heap_calloc() in _ItemizeInternal().
      usp10: Use heap_calloc() in SHAPE_does_GSUB_feature_apply_to_chars().
      wined3d: Pass a texture and sub-resource index to wined3d_blitter_ops.blitter_blit().
      wined3d: Pass a texture and sub-resource index to wined3d_surface_blt().
      wined3d: Pass a texture and sub-resource index to texture2d_create_dc().
      wined3d: Pass a texture and sub-resource index to texture2d_destroy_dc().
      wined3d: Pass a texture to context_surface_update().
      wined3d: Pass a resource to context_generate_rt_mask_no_fbo().
      wined3d: Get rid of the "container" field from struct wined3d_surface.
      wined3d: Get rid of the unused context_get_rt_surface().
      usp10: Use usp10_array_reserve() in GSUB_initialize_script_cache().
      wined3d: Store the destination as texture + sub-resource index in struct wined3d_overlay_info.
      wined3d: Rename struct wined3d_surface to struct wined3d_dc_info.
      wined3d: Only store dc_info for textures that require it.
      wined3d: Reject managed/scratch textures with dynamic usage in texture_init().
      usp10: Simplify GPOS_expand_script_cache().
      wined3d: Merge the surface_created() and volume_created() wined3d_device_parent_ops callbacks.
      wined3d: Merge volumetexture_init() and texture_init().
      wined3d: Merge wined3d_texture_init() into texture_init().
      winex11: Restore the X11DRV_FLUSH_GL_DRAWABLE XFlush() for setups without OML_sync_control.

Jacek Caban (3):
      mshtml: Use nsIDOMEvent directly to prevent default event handling in dispatch_event_object.
      mshtml/tests: Added more IDOMEvent::preventDefault tests.
      msctf: Added semi-stub support for ITfKeyTraceEventSink event sink.

James Woodcock (1):
      msvcrt: Gets() should handle EOF on stdin gracefully.

Johann Frei (1):
      dinput: Implement X/Y axis granularity and add test.

Julian Rüger (1):
      po: Update German translation.

Józef Kucia (11):
      wined3d: Allow blits from drawable location when loading renderbuffer locations.
      d3d9/tests: Add test for readback from multisample front buffer.
      wined3d: Remove PresentationIntervals from WINED3DCAPS.
      wined3d: Replace presentation interval flags with enum.
      d3d8: Validate presentation interval.
      d3d9: Validate presentation interval.
      d3d8/tests: Add test for presentation intervals.
      d3d9/tests: Add test for presentation intervals.
      winevulkan: Simplify wine_vkEnumeratePhysicalDevices().
      winevulkan: Fix vkEnumerateInstanceExtensionProperties().
      winevulkan: Remove unnecessary cast from wine_vk_device_alloc_queues().

Kai Krakow (2):
      wined3d: Recognize GTX 1050 Ti card with NVIDIA driver.
      winebus.sys: Map more SDL Xbox controllers.

Louis Lenders (2):
      ntdll: Match NtAllocateUuids signature to Windows 2000 instead of NT4.
      xinput1_3: Quiet a noisy fixme.

Matteo Bruni (22):
      wined3d: Pass a wined3d_context structure to texture2d_download_data().
      wined3d: Only copy the source/destination rectangles when needed in texture2d_blt_fbo().
      wined3d: Restore the correct sub resource in texture2d_load_fb_texture().
      d3d9: Create single-level textures if the format doesn't support AUTOGENMIPMAP.
      d3d9/tests: Add a visual test for D3DUSAGE_AUTOGENMIPMAP with unsupported format.
      include: Add d3d9 enum values and defines for dual source blending.
      include: Update d3d9 headers.
      include: Add a couple of missing d3d8 cap flags.
      d3d8: Filter device caps.
      wined3d: Pass a wined3d_context structure to texture2d_depth_blt_fbo().
      wined3d: Do not apply fixed-function state in context_apply_blit_state().
      d3dx9/tests: Disable a test crashing on Win10.
      d3dx9/tests: Fix checking for D3DUSAGE_AUTOGENMIPMAP support.
      d3dx9/tests: Add a few missing surface Release() calls.
      tools: Add d3dx11_xx to make_specfiles.
      d3dx11_42: Update spec file.
      d3dx9: Skip AddRef + Release if SetValue is called with the old texture.
      d3dx9: Cleanup D3DXVec3Unproject() implementation a bit.
      d3dx9/tests: Cleanup test_createtext() a bit.
      d3d8/tests: Add a test for device caps.
      d3d9/tests: Add a test for device caps.
      d3d9/tests: Add a d3d9ex test for device caps.

Michael Müller (8):
      ntdll: Implement ProcessImageFileNameWin32 in NtQueryInformationProcess.
      sfc_os: Set an error code in SfcGetNextProtectedFile stub.
      user32: Add stubs for GetWindowDisplayAffinity and SetWindowDisplayAffinity.
      mpr: Return correct error code for non network paths and REMOTE_NAME_INFO_LEVEL in WNetGetUniversalName.
      api-ms-win-shcore-obsolete-l1-1-0: Add dll.
      api-ms-win-shcore-thread-l1-1-0: Add dll.
      api-ms-win-shcore-stream-l1-1-0: Add dll.
      api-ms-win-rtcore-ntuser-draw-l1-1-0: Add dll.

Michael Stefaniuc (15):
      dmusic/tests: Check forms 'DMAP' and 'DMTG' in ParseDescriptor too.
      dmloader/tests: Add IDirectMusicObject::ParseDescriptor() tests.
      dmstyle/tests: Avoid a clang warning.
      secur32: Remove comment referencing an old macro.
      dmime: Add a generic ParseDescriptor helper and use it for DMSegment.
      dmime: Reimplement ParseDescriptor for DMAudioPathConfig.
      dmime: Reimplement ParseDescriptor for DMGraph.
      dmime/tests: Add ParseDescriptor NULL pointer tests.
      dmime: Use ParseDescriptor() instead of reimplementing it.
      dmime: Stop pretending to Load() the 'WAVE' form.
      dmime/tests: Fix an IStream use after free and a leak.
      dmime/tests: Add an invalid stream test.
      dmime: Reimplement IPersistStream_Load() for DMSegment.
      dmime: The descriptor is already parsed for the segment form.
      dmime: Reimplement the segment form parser.

Nikolay Sivov (7):
      d3dx9: Improve argument validation in CloneEffect().
      ntdll: Allow explicitly specified asm.v2 namespace for "trustInfo".
      comctl32/listview: Do not try to invalidate for invalid item indices.
      wincodecs/tests: Move gif decoder test to appropriate file.
      wincodecs/tests: Test headers written by BMP encoder.
      wincodecs: Use bottom-up orientation in BMP encoder.
      comdlg32/tests: Remove a macro.

Piotr Caban (6):
      comctl32: Update all items rects in TREEVIEW_RecalculateVisibleOrder.
      comctl32/tests: Add out of visible area item expand test.
      msvcp100: Add _Runtime_object class implementation.
      concrt140: Add _Runtime_object exports.
      ntdll: Change module load order so it matches InLoadOrderModuleList.
      wininet: Fix https connections over proxy.

Roderick Colenbrander (28):
      winevulkan: Implement vkEnumeratePhysicalDevices.
      winevulkan: Implement vkEnumerateDeviceExtensionProperties.
      winevulkan: Implement physical device core functions.
      winevulkan: Load device functions from vkGetInstanceProcAddr.
      winevulkan: Implement vkCreateDevice.
      winevulkan: Implement vkGetDeviceProcAddr.
      winevulkan: Implement vkDestroyDevice.
      winevulkan/winex11: Add Vulkan WSI stubs (VK_KHR_surface / VK_KHR_swapchain).
      winevulkan: Sanitize VkInstanceCreateInfo before passing to driver.
      winex11: Enable surface support for instances.
      winex11: Add initial vkCreateWin32SurfaceKHR implementation.
      winex11: Implement vkGetPhysicalDeviceWin32PresentationSupportKHR.
      winex11: Implement vkDestroySurfaceKHR.
      winex11: Implement support for vkGetPhysicalDeviceSurface*KHR APIs.
      winevulkan: Implement device extension enumeration.
      winex11: Implement Vulkan swapchain support.
      winevulkan: Implement vkGetDeviceQueue.
      winevulkan: Implement various device functions.
      winevulkan: Implement vkAllocate/FreeCommandBuffers.
      winevulkan: Implement vkCmdExecuteCommands.
      winevulkan: Implement remaining vkCommandBuffer functions.
      winevulkan: Implement vkQueueSubmit.
      winevulkan: Implement vkQueuePresentInfoKHR.
      winevulkan: Implement vkQueueBindSparse and vkQueueWaitIdle.
      winevulkan: Filter graphics driver reported instance extensions.
      winevulkan: Implement VK_KHR_get_physical_device_properties2.
      winevulkan: Support various device extensions.
      winevulkan: Allow vkGetDeviceProcAddr to load instance functions for broken games.

Sebastian Lackner (2):
      ntdll: Correctly handle privileged instructions on x86-64.
      d3dx9: Adjust ID3DXEffect interface based on DLL version.

Sergio Gómez Del Real (1):
      kernel32: Implement FindNLSStringEx.

Stefan Leichter (3):
      ntdll: Fix RtlCheckRegistryKey when called with empty path.
      ntdll: Implement RtlCreateRegistryKey.
      ntdll/tests: Add tests for RtlCreateRegistryKey.

Vincent Povirk (2):
      gdiplus: Transform region rects as rects when possible.
      gdiplus: Optimize clip region transforms.

Zebediah Figura (26):
      quartz/tests: Clean up test_legacy_filter_registration().
      quartz/tests: Test that IFilterMapper enums filters registered with IFilterMapper2.
      ntdll/tests: Simplify ProcessImageFileName test.
      ntdll/tests: Add a test for ProcessImageFileNameWin32.
      shell32/tests: Clean up and expand tests for IShellFolder_ParseDisplayName().
      explorer: Pass the full path to ParseDisplayName().
      devenum/tests: Test all registered categories.
      devenum/tests: Test registering DirectShow filters.
      devenum: More correctly handle device types.
      devenum: Allow parsing display name without class ID.
      devenum: Correctly implement IMoniker::GetDisplayName().
      devenum: Create the key in IPropertyBag::Write() instead of ParseDisplayName().
      quartz/tests: Remove a debug trace.
      devenum: Always scan for devices in CreateClassEnumerator().
      devenum: Use version 2 of REGFILTER2 to register legacy filters.
      quartz: Don't fail if the filter CLSID doesn't exist.
      kernel32/tests: Fix permission check.
      regedit: Use monospace font for hex edit dialog.
      regedit: Also display the byte offset in the hex edit dialog.
      regedit: Make hexedit dialog a little larger.
      regedit: Fix updating the scrollbar in the hex edit dialog.
      devenum: Register legacy AM filters as devenum codecs, not through FilterMapper2.
      devenum: Register DirectSound devices as codec devices.
      ntdll: Fix exception parameters on x86-64.
      d3dx9: Add stub for D3DXComputeNormalMap.
      ieframe: Clean up InternetExplorerManager server process.

Zhiyi Zhang (2):
      kernel32: Fix handling lines with only values in GetPrivateProfileSection.
      msvcr120: Add __free_locale.

--
Alexandre Julliard
julliard@winehq.org
